建造者模式
来源:互联网 发布:查淘宝号的网址 编辑:程序博客网 时间:2024/06/07 09:35
建造者模式:
将构建复杂对象的过程和它的部件解耦,使得构建构成和部件隔离开来,使得同样的构造过程可以创建不同的表示,如生产电脑的过程等。可以看成做东西,怎么做(Director)?做什么(Product)?谁来做(Builder)?来看待该模式。
使用场景:
1.相同的方法不同的执行顺序,产生不同的事件结果。
2.当初始化一个对象特别复杂,如参数特别多或者很多参数具有默认值时。—>链式构造
UML类图:
建造类使用产品类,Director使用抽象构造类,
Builder模式的简单实现:
//抽象产品类,包含需要组装的各部分
public abstract class Computer { protected String mBoard; protected String mDisplay; protected String mOs; protected Computer(){ } public void setmDisplay(String mDisplay) { this.mDisplay = mDisplay; } public void setmOs() { } public void setmBoard(String mBoard) { this.mBoard = mBoard; } @Override public String toString() { return "Computer{" + "mBoard='" + mBoard + '\'' + ", mDisplay='" + mDisplay + '\'' + ", mOs='" + mOs + '\'' + '}'; }}
//具体的产品类
public class MacBook extends Computer { public MacBook() { } public void setmOs() { mOs = "Mac OS X 10.10"; }}
//抽象建造类,包含一些生产方法和创建产品实例
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 computer = new MacBook(); @Override public void buildBoard(String board) { computer.setmBoard(board); } @Override public void buildDisplay(String display) { computer.setmDisplay(display); } @Override public void buildOS() { computer.setmOs(); } @Override public Computer create() { return computer; }}public class Director { Builder builder = null; public Director(Builder builder) { this.builder = builder; } //构造方法规定了具体的生产流程,和需要的组件。而实际的生产则依赖传入的Builder。可以把这个Builder看成是工人,而Director看成是流水线。 public void construct(String board,String display){ builder.buildBoard(board); builder.buildDisplay(display); builder.buildOS(); }}
public class BuilderTest { public static void main(){ Builder builder = new MacBookBuilder(); Director director = new Director(builder); director.construct("英特尔主板","Retine显示器"); System.out.print(builder.create().toString()); }}
这里Builder域Director一起将一个复杂对象的构建与他的表现分离,使得同样的构建过程可以创建不同的对象。
思考:需要重点理清Director 和Builder的意义
阅读全文
0 0
- Builder 建造者模式
- 建造者模式
- 设计模式-------建造者
- 建造者模式
- 建造者模式(Builder)
- 建造者模式(Builder)
- 建造者模式
- 建造者模式 - builder
- 建造者模式
- Builder建造者模式
- 建造者模式(Builder)
- 建造者模式(builder)
- 建造者模式
- java建造者模式
- 建造者模式
- 建造者模式
- 建造者模式(Builder)
- 建造者模式
- Failed to resolve:com.android.support:appcompat-v7:27.+问题解决
- String.format
- 【1701H1】【穆晨】【171114】连续第三十五天总结
- 斐波那契数列取余
- jdk的安装与配置
- 建造者模式
- ElasticSearch的中文分词
- <input type="file"/>实现图片预览
- laravel路由设置模型绑定
- PHP大数组过滤元素、修改元素性能分析
- Mysql Server 安装
- 调整数组使奇数全部都位于偶数前面
- ElasticSearch的搜索推荐(typeahead)
- jquery得到版本方法