设计模式-建造者模式
来源:互联网 发布:彩票计划网站源码 编辑:程序博客网 时间:2024/05/17 06:42
设计模式之建筑者模式
概述
将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。
适用性
1.当创建复杂对象的算法应该独立于该对象的组成部分以及它们的装配方式时。
2.当构造过程必须允许被构造的对象有不同的表示时。
2.当构造过程必须允许被构造的对象有不同的表示时。
参与者
1.Builder
为创建一个Product对象的各个部件指定抽象接口。
2.ConcreteBuilder
实现Builder的接口以构造和装配该产品的各个部件。
定义并明确它所创建的表示。
提供一个检索产品的接口。
3.Director
构造一个使用Builder接口的对象。
4.Product
表示被构造的复杂对象。ConcreteBuilder创建该产品的内部表示并定义它的装配过程。
包含定义组成部件的类,包括将这些部件装配成最终产品的接口。
为创建一个Product对象的各个部件指定抽象接口。
2.ConcreteBuilder
实现Builder的接口以构造和装配该产品的各个部件。
定义并明确它所创建的表示。
提供一个检索产品的接口。
3.Director
构造一个使用Builder接口的对象。
4.Product
表示被构造的复杂对象。ConcreteBuilder创建该产品的内部表示并定义它的装配过程。
包含定义组成部件的类,包括将这些部件装配成最终产品的接口。
类图
Builder
package com.ywx.builder;import com.ywx.product.Person;public interface PersonBuilder {public void buildHead();public void buildBody();public void buildFoot();Person buildPerson();}
ConcreteBuilder
package com.ywx.concretebuilder;import com.ywx.builder.PersonBuilder;import com.ywx.product.Person;public class ManBuilder implements PersonBuilder{Person person;public ManBuilder(){person = new Person();}@Overridepublic void buildHead() {person.setHead("建造男人的头!");}@Overridepublic void buildBody() {person.setBody("建造男人的身体!");}@Overridepublic void buildFoot() {person.setFoot("建造男人的脚!");}@Overridepublic Person buildPerson() {return person;}}
package com.ywx.director;import com.ywx.builder.PersonBuilder;import com.ywx.product.Person;public class PersonDirector {public Person constructPerson(PersonBuilder pd){pd.buildHead();pd.buildBody();pd.buildFoot();return pd.buildPerson();}}
Product
package com.ywx.product;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.ywx.product;public class Man extends Person{}
Test
package com.ywx.test;import com.ywx.concretebuilder.ManBuilder;import com.ywx.director.PersonDirector;import com.ywx.product.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
建造男人的身体!
建造男人的脚!
建造男人的头!
建造男人的脚!
建造男人的头!
1 0
- 设计模式-------建造者
- 设计模式-建造者
- 建造者设计模式
- 建造者设计模式
- 建造者设计模式
- 设计模式-建造者
- 建造者设计模式
- 建造者设计模式
- 建造者设计模式
- [设计]建造者模式
- 设计模式:建造者模式
- 设计模式---建造者模式
- 设计模式---建造者模式
- 设计模式-----建造者模式
- 设计模式-【建造者模式】
- 设计模式--建造者模式
- 设计模式建造者模式
- 设计模式- 建造者模式
- URLEncoder.encode(oldname,"UTF-8")在firefox中无效
- 【HDU 5224】【水题】Tom and paper
- C++ 虚函数
- listview更新数据时报异常
- AndroidStudio部署项目时出现错误:Instant Run requires 'Tools | Android | Enable ADB integration' to be enabled
- 设计模式-建造者模式
- 自己动手用3D打印出你的个人数学科技馆
- VC中动态显示GIF
- 309. Best Time to Buy and Sell Stock with Cooldown
- Android工具
- OC中四种延时方法
- 深入理解javascript原型和闭包系列 深入理解javascript原型和闭包(3)——prototype原型
- DFS模板题---Lake Counting
- java微信开发API解析(四)-自定义菜单以及个性化菜单实现