java设计模式之建造者模式
来源:互联网 发布:淘宝手机端套餐 编辑:程序博客网 时间:2024/05/17 16:14
概述: 将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。
适应性:
1.当创建复杂对象的算法应该独立于该对象的组成部分以及它们的装配方式时。
2.当构造过程必须允许被构造的对象有不同的表示时。
思路:
1.Builder
为创建一个Product对象的各个部件指定抽象接口。
2.ConcreteBuilder
实现Builder的接口以构造和装配该产品的各个部件。
定义并明确它所创建的表示。
提供一个检索产品的接口。
3.Director
构造一个使用Builder接口的对象。
4.Product
表示被构造的复杂对象。ConcreteBuilder创建该产品的内部表示并定义它的装配过程。
包含定义组成部件的类,包括将这些部件装配成最终产品的接口。
类图:
实例:
Builder
public interface PersonBuilder { void buildHead(); void buildBody(); void buildFoot(); Person buildPerson();}
ConcreteBuilder
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
public class PersonDirector { public Person constructPerson(PersonBuilder pb) { pb.buildHead(); pb.buildBody(); pb.buildFoot(); return pb.buildPerson(); }}
Product
<pre name="code" class="java">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; }}public class Man extends Person {}
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:
建造男人的身体建造男人的脚建造男人的头
0 0
- java设计模式之建造者模式
- java设计模式之建造者模式
- java设计模式之建造者模式
- 【Java设计模式】之建造者模式
- java设计模式之建造者模式
- Java--设计模式之建造者模式
- java设计模式之-建造者模式
- java设计模式之建造者模式
- java设计模式之建造者模式
- java设计模式之建造者模式
- java设计模式之建造者模式
- java设计模式之建造者模式
- JAVA设计模式之:建造者模式
- Java设计模式之建造者模式
- Java设计模式之建造者模式
- java设计模式之建造者模式
- Java设计模式之建造者模式
- java设计模式之建造者模式
- STL系列之一 deque双向队列
- javascript深入理解js闭包
- hdu 5379 Mahjong tree dfs
- [leetcode] Palindrome Linked List
- %02d是什么意思
- java设计模式之建造者模式
- 学编程?重要?!
- Java——String
- Qt 图片缩放
- gimp中调整图像大小
- hdu5379||2015多校联合第7场1011 树形统计
- 【Android进阶】(1)使用开源框架AndroidAnnotation
- Hexadecimal View
- spring4+hibernate4配置过程中遇到的问题