设计模式-建造者模式
来源:互联网 发布:新郎新婚致辞 知乎 编辑:程序博客网 时间:2024/05/22 14:07
建造者模式
将一个复杂的构建与其表示相分离,使得同样的构建过程可以创建不同的表示。
建造模式是将复杂的内部创建封装在内部,对于外部调用的人来说,只需要传入建造者和建造工具,对于内部是如何建造成成品的,调用者无需关心。
分类
抽象建造者(Abstract Builder)角色:给出一个抽象解耦,以规范产品对象的各个组成成分建造。具体建造者类必须实现这个接口锁要求的两种方法:一种是建造方法,另一种是结果返还方法。有多少零件就应该有多少建造方法。
具体建造者(Concrete Builder)角色:担任这个角色的是与应用程序紧密相关的一些类,它们在应用程序调用下创建产品实例。它要完成的任务包括:
A.实现抽象建造者锁声明的接口,给出一步一步地完成创建产品实例的操作;
B.在建造完成之后,提供产品实例。
导演者(Director)角色:调用具体建造者角色以创建产品对象,它与客户端打交道。
产品(Product)角色:它是建造中的复杂对象。
简单实例
抽象建造者:
public interface Builder {public void createFloor();public void createWall();public void createRoof();public void createWindow();}
真实建造者:
中式风格建造
public class ChinaWorker implements Builder {public House house = new ChinaHouse();@Overridepublic void createFloor() {house.setFloor(" create china Floor ");}@Overridepublic void createRoof() {house.setRoof(" create china Roof ");}@Overridepublic void createWall() {house.setWall(" create china Roof ");}@Overridepublic void createWindow() {house.setWindow(" create china Window ");}@Overridepublic House getHouse() {return house;}}英式风格建造者
public class EnglishWorker implements Builder {public House house = new EnglishHouse();@Overridepublic void createFloor() {house.setFloor(" create english Floor ");}@Overridepublic void createRoof() {house.setRoof(" create english Roof ");}@Overridepublic void createWall() {house.setWall(" create english Roof ");}@Overridepublic void createWindow() {house.setWindow(" create english Window ");}@Overridepublic House getHouse() {return house;}}产品:
public class House {public String floor;public String wall;public String roof;public String window;public String getFloor() {return floor;}public void setFloor(String floor) {this.floor = floor;}public String getWall() {return wall;}public void setWall(String wall) {this.wall = wall;}public String getRoof() {return roof;}public void setRoof(String roof) {this.roof = roof;}public String getWindow() {return window;}public void setWindow(String window) {this.window = window;}}
public class ChinaHouse extends House {}
public class EnglishHouse extends House {}
导演:
public class Designer {public void command(Builder builder) {builder.createFloor();builder.createRoof();builder.createWall();builder.createWindow();}}
客户端:
public class Client {public static void main(String[] args) {Builder builder = new ChinaWorker();House house = new Designer().command(builder);System.out.println(house.window);builder = new EnglishWorker();house = new Designer().command(builder);System.out.println(house.window);//create china Window //create english Window }}
0 0
- 设计模式-------建造者
- 设计模式-建造者
- 建造者设计模式
- 建造者设计模式
- 建造者设计模式
- 设计模式-建造者
- 建造者设计模式
- 建造者设计模式
- 建造者设计模式
- [设计]建造者模式
- 设计模式:建造者模式
- 设计模式---建造者模式
- 设计模式---建造者模式
- 设计模式-----建造者模式
- 设计模式-【建造者模式】
- 设计模式--建造者模式
- 设计模式建造者模式
- 设计模式- 建造者模式
- XMPP 和 Openfire
- 兄弟郊游问题_JAVA_南阳理工ACM
- 程序员的10大成功面试技巧
- XMPP-0055搜索用户协议
- Visual Studio 2005 序列号过期破解方法
- 设计模式-建造者模式
- C++虚函数
- Tcp/ip实验准备:一个简单的定时器——boost实现
- [转]C++ - 网络编程模型 - Linux EPOLL
- 回发或回调参数无效。在配置中使用 <pages enableEventValidation="true"/> 或在页面中使用 <%@ Page EnableEventValidation="true"
- 关于C#多线程委托的简单讲解
- 海尔发布首套智能套装SmartCare,主打智能、简单
- 一方库、二方库、三方库是什么?
- 算法