设计模式之Builder模式
2016-08-16 10:21
369 查看
还记得我们在写第一次创建一个Dialog时,可以这样做。
这就是builder模式,也许我们可以在构造区函数中写上十几个参数来完成初始化工作,但是,参数太多,会不会太乱了,而builder模式就是一个不错的选择。
下面是一个牵强的例子:
自己写的代码自己当然可以看懂,但是给别人看时,别人就可能不清楚了,他可能会先调用setFlag(),这样会报空指针异常,这个代码简单,一看就知道了,但是,若代码比较复杂呢?看看下面的一个方法。
这样通过一个builder来创建我们想要的对象,在这儿处理好先后顺序就可以了。
注意到,Builer类的set函数都会返回自身的引用this,这主要是用于链式调用,这也是Builder设计模式中的一个很明显的特征。
AlertDialog.Builer builder=new AlertDialog.Builder(context); builder.setIcon(R.drawable.icon) .setTitle("title") .setMessage("message") .setPositiveButton("Button1", new DialogInterface.OnclickListener(){ public void onClick(DialogInterface dialog,int whichButton){ setTitle("click"); } }) .create() .show();
这就是builder模式,也许我们可以在构造区函数中写上十几个参数来完成初始化工作,但是,参数太多,会不会太乱了,而builder模式就是一个不错的选择。
下面是一个牵强的例子:
public class Person { private String name; private String id; private String flag; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getId() { return id; } public void setId(String id) { this.id = id; } public String getFlag() { return flag; } public void setFlag() { this.flag = name+id;//在这儿需要初始化一个标志字段,而这个字段是由name和id组合而成 } }
自己写的代码自己当然可以看懂,但是给别人看时,别人就可能不清楚了,他可能会先调用setFlag(),这样会报空指针异常,这个代码简单,一看就知道了,但是,若代码比较复杂呢?看看下面的一个方法。
public class PersonBuilder { private String name; private String id; public PersonBuilder setName(String name) { this.name = name; return this; } public PersonBuilder setId(String id) { this.id = id; return this; } public Person build(){ Person build = new Person(); build.setId(id); build.setName(name); build.setFlag(); return build; } }
这样通过一个builder来创建我们想要的对象,在这儿处理好先后顺序就可以了。
注意到,Builer类的set函数都会返回自身的引用this,这主要是用于链式调用,这也是Builder设计模式中的一个很明显的特征。
public static void main(String arg[]){ Person person = new PersonBuilder().setName("张三").setId("dsfhoiasfjsdajf").build(); System.out.println(person.getFlag()); }
相关文章推荐
- 设计模式之Builder
- 设计模式笔记(1 ABSTRACT FACTORY & BUILDER)
- 设计模式笔记(1 ABSTRACT FACTORY & BUILDER)
- [设计模式]Abstract Factory和Builder
- 设计模式第3篇Builder(第二部分)
- Java设计模式:Builder(建设者模式)
- C#设计模式之建造者(Builder)模式示例源代码
- 设计模式PHP5实现之----生成器(Builder)
- 设计模式之Builder
- C#设计模式之建造者(Builder)模式示例源代码
- 设计模式第3篇Builder(第一部分)
- (转)设计模式(Design Patterns)笔记之四:Builder yakuu [原作]
- 设计模式(6)-建造者模式(Builder)
- 设计模式之Builder——购机篇
- 设计模式之C#实现(二)---Builder
- [用设计模式锻炼C#系列]之Builder
- 学习设计模式(一) Builder
- 设计模式之生成器(Builder)----对象创建型模式
- .NET设计模式(4):建造者模式(Builder Pattern)
- 用Java实现的设计模式系列(3)--Builder