Android和设计模式:建造者模式
2011-08-26 09:56
549 查看
最近在继续iPhone业务的同时还需要重新拾起Android。在有些生疏的情况下,决定从Android源码中感悟一些Android的风格和方式。在学习源码的过程中也发现了一些通用的模式,希望通过一个系列的文章总结和分享下。 建造者模式将一个复杂的构建与其表示相分离,使得同样的构建过程可以创建不同的表示。Android中AlertDialog是一个多面手,可以有着不同的样式和呈现,这样通过Builder就可以有效实现构建和表示的分离。其实现的类图如下:
主要代码如下: public static class Builder {
private final AlertController.AlertParams P;
private int mTheme;
...... public Builder(Context context, int theme) {
P = new AlertController.AlertParams(context);
mTheme = theme;
}
public Builder setTitle(int titleId) {
P.mTitle = P.mContext.getText(titleId);
return this;
} public Builder setMessage(int messageId) {
P.mMessage = P.mContext.getText(messageId);
return this;
}
public Builder setIcon(int iconId) {
P.mIconId = iconId;
return this;
} public Builder setPositiveButton(int textId, final OnClickListener listener) {
P.mPositiveButtonText = P.mContext.getText(textId);
P.mPositiveButtonListener = listener;
return this;
}
public Builder setNegativeButton(int textId, final OnClickListener listener) {
P.mNegativeButtonText = P.mContext.getText(textId);
P.mNegativeButtonListener = listener;
return this;
}
......
public AlertDialog create() {
final AlertDialog dialog = new AlertDialog(P.mContext, mTheme);
P.apply(dialog.mAlert);
dialog.setCancelable(P.mCancelable);
dialog.setOnCancelListener(P.mOnCancelListener);
if (P.mOnKeyListener != null) {
dialog.setOnKeyListener(P.mOnKeyListener);
}
return dialog;
} public AlertDialog show() {
AlertDialog dialog = create();
dialog.show();
return dialog;
}
}
其中在进行各种属性设定的时候都返回this,这样就可以实现“流畅的接口”,创建AlertDialog的时候就可以使用如下代码:
AlertDialog langSelectionDialog = new AlertDialog.Builder(context).setTitle("please select a language").setSingleChoiceItems(
new String[] {"en", "tr"}, 0, null).setPositiveButton("ok", new OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
Log.i("Tag","ok "+ which);
}
}).setNegativeButton("cancle", new OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
Log.i("Tag","cancle");
}
}).show();
主要代码如下: public static class Builder {
private final AlertController.AlertParams P;
private int mTheme;
...... public Builder(Context context, int theme) {
P = new AlertController.AlertParams(context);
mTheme = theme;
}
public Builder setTitle(int titleId) {
P.mTitle = P.mContext.getText(titleId);
return this;
} public Builder setMessage(int messageId) {
P.mMessage = P.mContext.getText(messageId);
return this;
}
public Builder setIcon(int iconId) {
P.mIconId = iconId;
return this;
} public Builder setPositiveButton(int textId, final OnClickListener listener) {
P.mPositiveButtonText = P.mContext.getText(textId);
P.mPositiveButtonListener = listener;
return this;
}
public Builder setNegativeButton(int textId, final OnClickListener listener) {
P.mNegativeButtonText = P.mContext.getText(textId);
P.mNegativeButtonListener = listener;
return this;
}
......
public AlertDialog create() {
final AlertDialog dialog = new AlertDialog(P.mContext, mTheme);
P.apply(dialog.mAlert);
dialog.setCancelable(P.mCancelable);
dialog.setOnCancelListener(P.mOnCancelListener);
if (P.mOnKeyListener != null) {
dialog.setOnKeyListener(P.mOnKeyListener);
}
return dialog;
} public AlertDialog show() {
AlertDialog dialog = create();
dialog.show();
return dialog;
}
}
其中在进行各种属性设定的时候都返回this,这样就可以实现“流畅的接口”,创建AlertDialog的时候就可以使用如下代码:
AlertDialog langSelectionDialog = new AlertDialog.Builder(context).setTitle("please select a language").setSingleChoiceItems(
new String[] {"en", "tr"}, 0, null).setPositiveButton("ok", new OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
Log.i("Tag","ok "+ which);
}
}).setNegativeButton("cancle", new OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
Log.i("Tag","cancle");
}
}).show();
相关文章推荐
- android设计模式——建造者模式
- Android 内功心法(1.10)——android常用设计模式之建造者(Builder)模式
- Android设计模式系列(12)--SDK源码之生成器模式(建造者模式)
- Android开发框架/库学习,设计模式之建造者模式
- Android 设计模式之(二)建造者,模板方法,策略模式
- Android的开发之&java23中设计模式------建造者模式
- 浅学设计模式之建造者(Buildler Pattern)模式及在android中的应用
- Android设计模式(一)—— 建造者模式
- Android设计模式之建造者模式(builder pattern)
- Android设计模式---之生成器模式(建造者模式)
- java/android 设计模式学习笔记(10)---建造者模式
- Android 设计模式 之 建造者模式
- Android设计模式之建造者模式(Builder Pattern)
- Android设计模式之建造者模式builder
- Android设计模式系列(12)--SDK源码之生成器模式(建造者模式)
- Android设计模式应用---建造者模式
- Android设计模式-建造者模式
- Android的设计模式-建造者模式
- android 建造者设计模式
- android设计模式之建造者模式