建造者模式(Builder) Java 造人和人的细节分开
2016-06-18 17:10
661 查看
定义
建造者模式(builder):一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。类图
代码
Person
package ding.study.designpatterns.builder; /** * 人类 * @author daniel * @email 576699909@qq.com * @time 2016-5-23 上午10:23:16 */ public class Person { private String head; private String body; private String foot; public String getHead() { return head; } public void setHead(String head) { this.head = head; } public String getBody() { return body; } public void setBody(String body) { this.body = body; } public String getFoot() { return foot; } public void setFoot(String foot) { this.foot = foot; } }
PersonBuilder 造人抽象类和实现类
package ding.study.designpatterns.builder; /** * 造人的接口 * @author daniel * @email 576699909@qq.com * @time 2016-5-23 上午10:23:01 */ public interface PersonBuilder { void buildHead(); void buildBody(); void buildFoot(); Person buildPerson(); } package ding.study.designpatterns.builder; /** * 造人实现类 * @author daniel * @email 576699909@qq.com * @time 2016-5-23 上午10:23:28 */ public class PersonBuilderManImpl implements PersonBuilder{ private Person person; public PersonBuilderManImpl(){ person=new Person(); } @Override public void buildHead() { person.setHead("男人爆炸头"); } @Override public void buildBody() { person.setBody("男人大胸肌"); } @Override public void buildFoot() { person.setFoot("男人大脚板"); } @Override public Person buildPerson() { return person; } }
PersonDirector建造者
package ding.study.designpatterns.builder; /** * 建造者 * @author daniel * @email 576699909@qq.com * @time 2016-5-23 上午10:20:21 */ public class PersonDirector { /** * 帮助调用流程 * @author daniel * @time 2016-5-23 上午10:20:28 * @param personBuilder * @return */ public Person constructPerson(PersonBuilder personBuilder) { personBuilder.buildHead(); personBuilder.buildBody(); personBuilder.buildFoot(); return personBuilder.buildPerson(); } }
测试类
package ding.study.designpatterns.builder; /** * 抽象造人过程,其它类实现造人细节 * 定义 将一个复杂对象的构造与它的表示分离,使同样的构建过程可以创建不同的表示,这样的设计模式被称为建造者模式。[1] 实用范围 1 当创建复杂对象的算法应该独立于该对象的组成部分以及它们的装配方式时。 2 当构造过程必须允许被构造的对象有不同表示时。 角色 在这样的设计模式中,有以下几个角色: 1 builder:为创建一个产品对象的各个部件指定抽象接口。 2 ConcreteBuilder:实现Builder的接口以构造和装配该产品的各个部件,定义并明确它所创建的表示,并 提供一个检索产品的接口。 3 Director:构造一个使用Builder接口的对象。 4 Product:表示被构造的复杂对象。ConcreteBuilder创建该产品的内部表示并定义它的装配过程,包含定义组成部件的类,包括将这些部件装配成最终产品的接口。 * @author daniel * @email 576699909@qq.com * @time 2016-5-23 上午10:26:50 */ public class Zmain { /**男人爆炸头 男人大胸肌 男人大脚板 * @author daniel * @time 2016-5-23 上午10:20:48 * @param args */ public static void main(String[] args) { //建造者-人类导演 PersonDirector personDirector=new PersonDirector(); //造人类,并且执行完造人细节 Person person=personDirector.constructPerson(new PersonBuilderManImpl()); System.out.println(""+person.getHead()); System.out.println(""+person.getBody()); System.out.println(""+person.getFoot()); } }
输出
男人爆炸头 男人大胸肌 男人大脚板
实用范围
1 当创建复杂对象的算法应该独立于该对象的组成部分以及它们的装配方式时。
2 当构造过程必须允许被构造的对象有不同表示时。
源码
https://github.com/dingsai88/StudyTest/tree/master/src/ding/study/designpatterns/builder相关文章推荐
- UI控件之显示文本控件TextView(上)
- vue.js入门Helloworld
- What Is a Hard Inquiry?(Fico信用查询之“硬查询”)
- UINavigationBar left right button 初始化
- hdu 5400 Arithmetic Sequence(重构数组)
- UI调试工具 Reveal
- SystemUI下拉通知栏的源码分析,屏蔽通知栏,监听通知栏下拉动作
- IOS中div contenteditable=true无法输入
- JAVA之旅(十七)——StringBuffer的概述,存储,删除,获取,修改,反转,将缓存区的数据存储到数组中,StringBuilder
- JAVA之旅(十七)——StringBuffer的概述,存储,删除,获取,修改,反转,将缓存区的数据存储到数组中,StringBuilder
- duilib + cef简单浏览器的demo
- K most frequent words from a file
- Altium Designer 16 (AD16) 破解版下载 百度网盘分享 16.1.9 (Build 221) 更新
- iOS开发UI篇—Modal简单介绍
- if,continue,break,while,do-while, switch,return,foreach,for等条件语句的使用
- 解决缺少apue.h的问题
- Android UiAutomator: 从apk中启动实现方法
- Android UI设计和形成原理(实现三级菜单)
- UITableview 滚动到底部
- String、StringBuffer与StringBuilder之间区别