设计模式--Builder
来源:互联网 发布:淘宝买摩托车可靠吗 编辑:程序博客网 时间:2024/05/06 08:34
1. 名称 (与开发人员共享的词汇)
创建者模式(Builder)
2.分类 (模式可以 归为的类目)
创建性模式
3.意图 (简短的描述该模式的作用)
允许用户在不知道对象内部结构的情况下,可以惊喜的控制对象的构造流程,将复杂对象的构建过程和它的部件解耦,使构建过程和部件的表示隔离开
4.动机 (给出问题以及解决问题的具体场景)
将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示
5.适用性 (描述模式可以被应用在什么场合)
1. 相同的方法,不同的执行顺序,产生不同的事件结果时
2. 多个部件或零件,都可以装配到一个对象中,但是产生的运行结果不同
3. 产品类非常复杂,或者产品类中的调用顺序不同产生了不同的作用
4. 初始化一个对象时特别复杂,参数繁多并且很多参数有默认值时
6.结构 (提供此模式的类结构图,显示类之间的关系)
7.参与者 (描述此设计中涉及的类和对象在模式中的责任和角色)
Product: 产品的抽象类
Builder: 抽象Builder类,规范产品的组建,一般由子类实现具体的组建过程
ConcreteBuilder: 具体的Builder类,实现具体的组建过程
Director: 统一组装过程
8.协作 (参与者如何在模式中合作)
Computer类定义了产品需要的部件接口
Macbook类提供了产品的部件
Builder类提供产品组装接口
MacbookBuilder类实现了产品组装的接口
Director类规定了组装步骤
通过以上的封装,我们创建一个对象时并不需要知道对象的组成,只要通过Director的construct方法就可以构造出一个想要的对象。
9.范例代码 (提供实现模式的代码片段)
public abstract class Builder {
public abstract void buildBoard(String board);
public abstract void buildDisplay(String display);
public abstract void buildOs();
public abstract Computer create();
}
public class MacbookBuilder extends Builder {
private Computer mComputer = new Macbook();
public void buildBoard(String board) {
mComputer.setBoard(board);
}
public void buildDisplay(String display) {
mComputer.setDisplay(display);
}
public void buildOs() {
mComputer.setOs();
}
public Computer create() {
return mComputer;
}
}
public abstract class Computer {
private String mBoard;
private String mDisplay;
protected String mOs;
protected Computer() {}
public void setBoard(String board) {
mBoard = board;
}
public void setDisplay(String display) {
mDisplay = display;
}
public abstract void setOs();
}
public class Macbook extends Computer {
protected Macbook() {}
public void setOs() {
mOs = "Mac Os";
}
}
public class Director {
Builder mBuilder = null;
public Director(Builder builder) {
mBuilder = builder;
}
public void construct(String board, String display) {
mBuilder.buildBoard(board);
mBuilder.buildDisplay(display);
mBuilder.buildOs();
}
}
10.实现 (在实现该模式时使用的技巧以及需要注意的问题)
在相关开发中,Director角色经常被省略,而直接使用一个Builder来进行对象的组装,这个builder通常为链式调用,关键点是每个方法都返回this,可以实现
这种形式不仅去除了Director角色,整个结构也更加简单,也能对Product对象的组装过程有更精细的控制。
- 设计模式:Builder模式
- 设计模式 -- BUILDER模式
- 【设计模式】Builder模式
- 设计模式-Builder模式
- 设计模式Builder模式
- 设计模式-Builder模式
- 设计模式 - Builder模式
- 设计模式 - Builder模式
- 设计模式---Builder模式
- 设计模式--Builder模式
- 设计模式---Builder模式
- 设计模式--Builder模式
- 设计模式---Builder模式
- 设计模式---Builder模式
- 设计模式-builder模式
- 【设计模式】Builder模式
- 设计模式----Builder模式
- 设计模式-Builder模式
- grunt合并压缩js,css文件(第二弹)
- PAT The Largest Generation (25)
- error C4996
- MongoDB权威指南中文版 下载
- 7. xdebug
- 设计模式--Builder
- Bootstrap后台开发模板整理
- js 数组常用方法总结
- UI手势
- (Java)LeetCode-21. Merge Two Sorted Lists
- android中src和background区别
- android的versionCode与versionName的区别
- MIT6.828 HW6: Threads and Locking
- ASP.NET MVC企业级项目框架搭建实战