浅谈Java设计模式----建造者模式
来源:互联网 发布:mac 更新java版本 编辑:程序博客网 时间:2024/05/19 02:20
在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());
程序运行效果
这样我们的建造设计模式就实现完了,当你再在遇上这种改需求的狂魔就可以轻松的应对了。
4 0
- 浅谈Java设计模式----建造者模式
- 设计模式--浅谈建造者模式
- 浅谈设计模式之建造者模式
- JAVA-建造者设计模式
- Java设计模式-----Builder建造者模式
- Java设计模式-----Builder建造者模式
- JAVA设计模式--建造者模式
- java设计模式之建造者模式
- java设计模式之建造者模式
- 设计模式(JAVA)-------建造者模式
- java设计模式之建造者模式
- 【Java设计模式】之建造者模式
- java设计模式之建造者模式
- JAVA设计模式-建造者模式-Builder
- JAVA系列-设计模式-建造者模式
- Java--设计模式之建造者模式
- JAVA设计模式-建造者模式(Builder)
- java设计模式之-建造者模式
- 安卓Activity启动模式特点和应用场景
- DirectX学习笔记(七):Direct3D纹理映射技术详解及实现
- u盘安装centos(linux操作系统)
- Bellman-Ford队列优化(邻接表)
- 二叉树中和为某一值的路径
- 浅谈Java设计模式----建造者模式
- 机器学习——误差
- HDU1238-Substrings
- Bellman-Ford
- 0914测试【提高组】(系实验选拔考2)
- 【Day4】 foreach的时候指针是如何指向的?list()/while()/each()循环数组的时候指针是如何指向的?
- 线段树区间修改
- Linux中常用命令01
- 字节位数