浅谈Java设计模式----建造者模式
2016-09-16 20:44
330 查看
在Android中我们经常使用到对话框这个API,其中这里面使用的就是建造者设计模式,当你需要为对话框设置一些内容如标题、对话框内容、确定按取消按钮等,我们可以使用链式调用一系列方法为其设置属性。
AlertDialog dialog=new AlertDialog.Builder(this) .setTitle() .setMessage() .setNegativeButton() .setPositiveButton() .show();
在使用某种设计模式的时候,我们应该想到在什么情况下需要使用,什么情况不需要使用。在这里举个例子:假如辅导员需要你统计班上同学的信息,第一次的时候只让你统计姓名、年龄、性别一般情况下我们会采用构造函数的方式去实现,如下代码
Person person=new Person("小明",19,"男"); System.out.println(person.toString());
Person类
public class Person { private int age; private String name; private String sex; public Person(String name, int age, String sex) { this.name = name; this.age = age; this.sex = sex; } @Override public String toString() { return "Person{" + "age=" + age + ", name='" + name + '\'' + ", sex='" + sex + '\'' + '}'; } }
当你刚暗暗窃喜的时候,这时候辅导员又说在把居住地址和QQ号加上,方便组建班级群。然后你就要去增加一个构造函数,再把这些值传进去。后来辅导员新需求又来了,告诉你还需要添加家长的联系方式,这时候难道又要去修改构造函数?这时候建造着模式就可以闪亮登场了!
public class Person { private int age; private int QQ; private int phone; private String name; private String sex; private String address; private String email; public static class Builder { private Person p; public Builder() { p = new Person(); } public Builder setName(String name) { p.name = name; return this; } public Builder setSex(String sex) { p.sex = sex; return this; } public Builder setAddress(String address) { p.address = address; return this; } public Builder setAge(int age) { p.age = age; return this; } public Builder setEmail(String email) { p.email = email; return this; } public Builder setQQ(int QQ) { p.QQ = QQ; return this; } public Builder setPhone(int phone) { p.phone = phone; return this; } public Person create() { return p; } } @Override public String toString() { StringBuilder sb = new StringBuilder(); if (name != null) { sb.append("name:" + name + ","); } if (age != 0) { sb.append("age:" + age + ","); } if (sex != null) { sb.append("sex:" + sex + ","); } if (phone != 0) { sb.append("phone:" + phone + ","); } if (QQ != 0) { sb.append("QQ:" + QQ + ","); } if (email != null) { sb.append("email:" + email + ","); } if (address != null) { sb.append("address:" + address); } return sb.toString(); } }
具体的使用
Person p1 = new Person.Builder() .setName("小明") .setAge(18) .setSex("男") .create(); System.out.println(p1.toString()); Person p2 = new Person.Builder() .setName("小明") .setAge(18) .setSex("男") .setQQ(999999) .setAddress("深圳市龙岗区坂田") .create(); System.out.println(p2.toString()); Person p3 = new Person.Builder() .setName("小明") .setAge(18) .setSex("男") .setQQ(666888) .setPhone(1383838438) .setAddress("深圳市龙岗区坂田") .create(); System.out.println(p3.toString());
程序运行效果
这样我们的建造设计模式就实现完了,当你再在遇上这种改需求的狂魔就可以轻松的应对了。
相关文章推荐
- 浅谈JAVA设计模式之——建造者模式(Builder)
- Java设计模式浅谈
- Java设计模式浅谈
- 浅谈 java 设计模式--装饰模式(Decorator pattern)
- 浅谈java中的单态设计模式
- 浅谈 java 设计模式--代理模式(Proxy pattern)
- java 设计模式 学习笔记(11) 建造者模式
- 浅谈 java 设计模式--原始模型模式(Prototype pattern)
- 浅谈 java 设计模式--工厂方法模式(Factory Method pattern)
- 浅谈 java 设计模式--单例模式(Singleton pattern)
- java设计模式——建造者模式(Builder)
- Java设计模式 - Builder(建造者模式)
- java设计模式---浅谈2种工厂模式和单例模式
- 浅谈 java 设计模式--简单工厂模式(Simple Factory pattern)
- 浅谈BREW对面向对象,Windows,Java,设计模式的借鉴
- 设计模式之—建造者模式(Builder)-Java实现
- java设计模式---浅谈2种工厂模式和单例模式
- JAVA设计模式四---Builder(建造者模式)
- 浅谈 java 设计模式--命令行模式(Command pattern)
- 浅谈 java 设计模式--观察者模式(Observer pattern)