浅谈JAVA设计模式之——建造者模式(Builder)
来源:互联网 发布:java数组从小到大排序 编辑:程序博客网 时间:2024/05/29 19:34
转载请注明出处:http://blog.csdn.net/l1028386804/article/details/45442197
ConcreteBuilder
Director
Test
result
一、概述
将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。
二、适用性
1.当创建复杂对象的算法应该独立于该对象的组成部分以及它们的装配方式时。
2.当构造过程必须允许被构造的对象有不同的表示时。
三、参与者
1.Builder 为创建一个Product对象的各个部件指定抽象接口。
2.ConcreteBuilder 实现Builder的接口以构造和装配该产品的各个部件。 定义并明确它所创建的表示。 提供一个检索产品的接口。
3.Director 构造一个使用Builder接口的对象。
4.Product 表示被构造的复杂对象。ConcreteBuilder创建该产品的内部表示并定义它的装配过程。 包含定义组成部件的类,包括将这些部件装配成最终产品的接口。
四、类图
五、示例
Builder
package com.lyz.design.builder;/** * Person对象的构造接口 * @author liuyazhuang * */public interface PersonBuilder { void buildHead(); void buildBody(); void buildFoot(); Person buildPerson();}
ConcreteBuilder
package com.lyz.design.builder;/** * Person对象的构造器 * @author liuyazhuang * */public class ManBuilder implements PersonBuilder { Person person; public ManBuilder() { person = new Man(); } public void buildBody() { person.setBody("建造男人的身体"); } public void buildFoot() { person.setFoot("建造男人的脚"); } public void buildHead() { person.setHead("建造男人的头"); } public Person buildPerson() { return person; }}
Director
package com.lyz.design.builder;/** * Person对象的整体构造器 * @author liuyazhuang * */public class PersonDirector { public Person constructPerson(PersonBuilder pb) { pb.buildHead(); pb.buildBody(); pb.buildFoot(); return pb.buildPerson(); }}
Product
package com.lyz.design.builder;/** * Person对象 * @author liuyazhuang * */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;}}
package com.lyz.design.builder;/** * 创建一个男人类继承Person * @author liuyazhuang * */public class Man extends Person {}
Test
package com.lyz.design.builder;/** * 测试类 * @author liuyazhuang * */public class Test {public static void main(String[] args) {PersonDirector pd = new PersonDirector();Person person = pd.constructPerson(new ManBuilder());System.out.println(person.getBody());System.out.println(person.getFoot());System.out.println(person.getHead());}}
result
建造男人的身体建造男人的脚建造男人的头
1 0
- 浅谈JAVA设计模式之——建造者模式(Builder)
- 设计模式之—建造者模式(Builder)-Java实现
- java 设计模式之建造者模式(Builder)模式
- java设计模式——建造者模式(Builder)
- java设计模式——建造者模式(Builder)
- 【java设计模式】之 建造者(Builder)模式
- Java设计模式之建造者(Builder)模式
- 设计模式之建造者模式java(Builder)
- 【java设计模式】之 建造者(Builder)模式
- java设计模式——建造者模式(Builder Pattern)
- 浅谈设计模式:建造者模式(Builder Pattern)
- JAVA设计模式——建造(Builder)模式
- JAVA设计模式:建造者(Builder)
- 设计模式(四)——建造者模式(Builder)
- 设计模式——建造者模式(Builder)
- 浅谈Java设计模式(四)建造者模式(Builder)
- JAVA设计模式之 建造者模式【Builder Pattern】
- Java设计模式 之 建造者模式Builder
- [C++]LeetCode 20: Valid Parentheses(判断运算符有效性)
- UVA - 10820 - Send a Table (欧拉函数)
- struts2学习笔记之一(初识jsp)
- php 判断汉子字母和数字 类型
- IT项目团队管理及领导人素质随记
- 浅谈JAVA设计模式之——建造者模式(Builder)
- 机器视觉代码集合,包括最热门的深度学习代码
- js特效之数码时钟
- PS画菱形并挪出一块
- 汉字转拼音方法
- struts2 学习笔记之二(初识servlet)
- Android 异常
- 丹麦海峡(贪心)
- 进程间通信(信号量通信)