设计模式系列5-建造者模式
来源:互联网 发布:wrk 压力测试 windows 编辑:程序博客网 时间:2024/04/30 00:40
设计模式系列5-建造者模式
前言:
建造者模式(Builder)前一节讲了抽象工厂模式,这节讲23种设计模式之建造者模式。
什么是建造者模式?
将一个复杂对象的构建与它的表现分离,使得同样的构建过程可以创建不同的表现。(最初的定义出现于《设计模式》(Addison-Wesley,1994)).
何时使用建造者模式?
在以下情境,自然会想到使用这一模式:
1.需要创建涉及各种部件的复杂对象。创建对象的算法应该独立于部件的半杯方式 。常见例子是构建组合对象。
2.构建过程需要以不同的方式(例如,部件或表现的不同组合)构建对象。
角色:
在此设计模式中,有以下几个角色:
1.Builder:为创建一个产品对象的各个部件指定抽象接口;
2.ConcreteBuilder:实现Builder的接口以构造和装配该产品的各个部件,定义并明确它所创建的表示,并提供一个检索产品的接口;
3.Director:构造一个使用Builder接口的对象;
4.Product:表示被构造的复杂对象。ConcreteBuilder创建该产品的内部表示并定义它的装配过程,包含定义组成部件的类,包括将这些部件装配成最终产品的接口。
建造者模式的实现:
1.建造者模式在Java中的实现:
Build
public interface Builder {public void buildHead();public void buildBody();public void buildFoot();public Person buildPerson();}
ConcreteBuilder
public class ConcreteBuilder implements Builder {Person person;public ConcreteBuilder() {person = new Person();}@Overridepublic void buildHead() {person.setHead("创建人的头部");}@Overridepublic void buildBody() {person.setBody("创建人的身体");}@Overridepublic void buildFoot() {person.setFoot("创建人的脚");}@Overridepublic Person buildPerson() {return person;}}
public class Director {public Person constructPerson(Builder builder) {builder.buildHead();builder.buildBody();builder.buildFoot();return builder.buildPerson();}}
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;}}
Test测试代码
public class Test {public static void main(String[] args) {Builder builder = new ConcreteBuilder();Director director = new Director();Person person = director.constructPerson(builder);System.out.println(person.getHead());System.out.println(person.getBody());System.out.println(person.getFoot());;}}
建造者模式与抽象工厂模式的区别:
1.建造者模式关注的是分步创建复杂对象,很多时候同一类型的对象可以以不同的方式创建。
2.抽象工厂的重点在于创建简单或者复杂产品的套件。
3.建造者模式在创多步建过程的最后一步返回产品,而抽象工厂模式则立刻返回产品。
- 设计模式系列5-建造者模式
- PHP设计模式系列 - 建造者模式
- JAVA系列-设计模式-建造者模式
- 炒冷饭系列:设计模式 建造者模式
- PHP设计模式系列 - 建造者模式
- 设计模式系列之 建造者模式
- 设计模式系列:建造者模式
- PHP设计模式系列 - 建造者模式
- 设计模式系列之建造者模式
- 设计模式利剑5-建造者模式
- 设计模式(5):建造者模式
- 设计模式(5) ------- 建造者模式
- 设计模式(5)-建造者模式
- 设计模式5-建造者模式
- 设计模式(5)-建造者模式
- 设计模式系列学习三:建造者模式(Builder)
- 设计模式系列课程12之【建造者模式】
- C#设计模式系列:建造者模式(Builder)
- 从头到尾彻底解析哈希表算法
- 多年的软件开发,学到了什么?
- 【推荐】同样的焦点图不同的写法
- 手动创建DataTable对象并绑定
- Android异步加载图像(含线程池,缓存方法)
- 设计模式系列5-建造者模式
- HDU P2032 杨辉三角形 解题报告
- CUDA, 用于大量数据的超级运算:第13节
- ASP.NET MVC+EF框架+EasyUI实现权限管理系列(2)-数据库访问层的设计Demo
- 浅述Session的持久化的作用与原理
- 内部类 学习笔记(三)
- struct tm和time_t总结
- Supported Values for @SuppressWarnings
- ASP.NET MVC+EF框架+EasyUI实现权限管理系列(3)-面向接口的编程