设计模式之建造者模式

来源:互联网 发布:linux 关闭防火墙 编辑:程序博客网 时间:2024/06/05 18:20
  • 模式定义:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示
  • 模式的使用场景:
    • 相同的方法,不同的执行顺序,产生不同的事件结果时
    • 多个部件或零件,都可以装配到一个对象中,但是产生的运行结果又不相同时
    • 产品类非常复杂,或者产品类中的调用顺序不同产生了不同的效能,这个时候使用Builder模式非常合适
  • Android源码中的模式实现
    • 在Android源码中,我们最常用的Builder模式就是AlertDialog.Builder,使用使用该Builder来构建复杂的AlertDialog对象。示例如下:
//显示基本的AlertDialog
private void showDialog(Context context){
     AlertDialog.Builder builder = new AlertDialog.Builder(context);
     builder.setIcon(R.drawable.icon);
     builder.setTitle("Title");
     builder.setMessage("Message");
     builder.setPositiveButton("Button1",new DialogInterface.OnClickListener(){
          public void onClick(DialogInterface dialog,int whichButton){
               setTitle("点上了对话框上的Button1");
          }
     });
     builder.setNeutralButton("Button2",new DialogInterface.OnClickListener() { 
          public void onClick(DialogInterface dialog, int whichButton) { 
               setTitle("点击了对话框上的Button2"); 
          } 
     }); 
     builder.setNegativeButton("Button3",new DialogInterface.OnClickListener() { 
          public void onClick(DialogInterface dialog, int whichButton) { 
               setTitle("点击了对话框上的Button3"); 
          } 
     });
     builder.create().show(); //构建AlertDialog,并且显示
}
具体样式点击一下链接查看
http://www.cnblogs.com/Gaojiecai/archive/2011/12/10/2283156.html
  • 优点
    • 良好的封装性,使用Builder模式可以使客户端不必知道产品内部组成的细节
    • 建造者独立,易扩展
  • 缺点
    • 会产生多余的Builder对象以及Director对象,消耗内存
    • 对象的构建过程暴露
0 0
原创粉丝点击