- 浏览: 25623 次
- 性别:
- 来自: 上海
文章分类
将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。
例如导出数据到文本文件和XML文件的步骤都是一样的:文件头,内容,文件尾
public interface Builder {
public void buildPart();
}
public interface Product {
}
public class ConcreteBuilder implements Builder {
private Product resultProduct;
public Product getResult() {
return resultProduct;
}
public void buildPart() {
}
}
public class Director {
private Builder builder;
public Director(Builder builder) {
this.builder = builder;
}
public void construct() {
builder.buildPart();
}
}
生成器分成两个很重要的部分:(生成器,指导者)
一个部分是Builder接口,定义了如何构建各个部件,也就是知道每个部件功能如何实现,以及如何装配这些部件到产品中去。
另一部分是Director,知道如何组合来构建产品,也就是Director负责整体的构建算法,而且通常是分步骤执行。
在生成器模式中,由于Builder对象只是提供接口给Director使用,那么具体的部件创建和装配方式是被Builder接口隐藏的,Director并不知道这些具体的实现细节。
例如导出数据到文本文件和XML文件的步骤都是一样的:文件头,内容,文件尾
public interface Builder {
public void buildPart();
}
public interface Product {
}
public class ConcreteBuilder implements Builder {
private Product resultProduct;
public Product getResult() {
return resultProduct;
}
public void buildPart() {
}
}
public class Director {
private Builder builder;
public Director(Builder builder) {
this.builder = builder;
}
public void construct() {
builder.buildPart();
}
}
生成器分成两个很重要的部分:(生成器,指导者)
一个部分是Builder接口,定义了如何构建各个部件,也就是知道每个部件功能如何实现,以及如何装配这些部件到产品中去。
另一部分是Director,知道如何组合来构建产品,也就是Director负责整体的构建算法,而且通常是分步骤执行。
在生成器模式中,由于Builder对象只是提供接口给Director使用,那么具体的部件创建和装配方式是被Builder接口隐藏的,Director并不知道这些具体的实现细节。
发表评论
-
访问者模式Visitor预留通路,回调实现
2014-03-13 16:55 377表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变各 ... -
桥接模式Bridge分离抽象和实现
2014-03-13 16:55 490将抽象部分与它的实现部分分离,使它们都可以独立地变化。 桥接 ... -
职责链模式Chain of Responsibility分离职责,动态组合
2014-03-12 17:25 341使多个对象都有机会处 ... -
装饰模式Decorator动态组合
2014-03-12 17:00 276动态地给一个对象添加 ... -
解释器模式Interpreters分离实现,解释执行
2014-03-12 16:27 294给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解 ... -
享元模式Flyweight分离与共享
2014-03-12 13:20 301运用共享技术有效地支持大量细粒度的对象。 安全实体:就是被系 ... -
备忘录模式Memento保存和回复内部状态
2014-03-11 17:47 432在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外 ... -
状态模式State根据状态来分离和选择行为
2014-03-11 17:20 398允许一个对象在其内部状态改变时改变它的行为。对象看起来似乎修改 ... -
策略模式Strategy分离算法,选择实现
2014-03-11 15:26 416迪米特法则:LoD,最少知识原则。 如果两个类不必彼此直接通信 ... -
模板方法模式Templete Method 固定算法骨架
2014-03-11 11:15 537定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法 ... -
组合模式Composite统一叶子对象和组合对象
2014-03-07 18:18 306将对象组合成树型结构以表示“部分-整体”的层次结构。组合模式使 ... -
迭代器模式Iterator 控制访问聚合对象中的元素
2014-03-07 17:57 409提供一种方法顺序访问一个聚合对象中的各个元素,而又不需要暴露该 ... -
命令模式Command 封装请求
2014-03-07 16:26 379将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数 ... -
观察者模式Observer订阅模式-触发联动
2014-03-07 11:19 382定义对象间的一种一对 ... -
代理模式Proxy 为别人做嫁衣(控制对象访问)
2014-03-06 00:39 330为其他对象提供一种代理以控罪对这个对象的访问。 代理大致被分为 ... -
中介者模式Mediator 封装交互
2014-03-06 00:19 370用一个中介对象来封装 ... -
原型模式Prototype 克隆生成对象
2014-03-06 00:19 565用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象 ... -
抽象工厂模式 Abstract Factory 选择产品簇的实现
2014-03-06 00:20 417工厂方法模式或简单工 ... -
工厂方法模式Factory Method延迟到子类来选择实现
2014-03-05 18:12 950定义一个用于创建对象 ... -
单例模式Singleton某个类只需要一个类实例
2014-03-05 16:46 426保证一个类只有一个实例,并提供一个访问它的全局访问点。 懒汉 ...
相关推荐
- **意图**:生成器模式通过将构建过程和表示分离,使得可以在不改变构建逻辑的情况下,创建多种不同的表示形式。 - **使用场合**:适用于创建复杂对象,需要独立于对象的组成部分和组装方式,或者需要支持多种...
生成器模式适用于以下场景:创建复杂对象的算法应独立于对象的组成部分和装配方式,以及当需要构造的对象表示可以多样化时。 生成器模式的参与者包括: 1. **Builder**:定义创建产品对象的接口。 2. **...
本质:分离整体构建算法和部件构造 --第九章:原型模式(Prototype) 本质:克隆生成对象 --第十章:中介者(Mediator) 本质:封装交互 --第十一章:代理模式(Proxy) 本质:控制对象访问 --第十二章:观察者模式...
- **应用场景**:当一个对象的构建过程很复杂或者有多个变体时,可以使用Builder模式。例如,构建一个复杂的XML文档时,可以使用该模式来简化构建过程。 - **优点**:可以灵活地构造出不同类型的对象。 - **缺点**:...
汽车由车轮 方向盘 发动机很多部件组成,同时,将这些部件组装成汽车也是一件复杂的工作,Builder 模式就是将这两 种情况分开进行。 设计模式之 Prototype(原型) 用原型实例指定创建对象的种类,并且通过拷贝这些...
- **1.4 Builder模式**:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。 - **应用场景**:当创建复杂对象的算法应该独立于部分组成对象的类时。 - **优点**:各个部件灵活组装,...
- **应用场景**:当创建的对象较复杂,由多个部件构成,并且这些部件需要按照一定的算法组装起来时使用。 - **优点**:各个部分的构造独立,便于加入新的建造者。 - **缺点**:产品的内部组成部分变化时,建造者...
简单来说,建造者模式允许你逐步构造一个复杂的对象,而且可以使用相同的构建过程来创建不同类型的对象。 - **例子**:用“生产流水线”来比喻建造者模式非常恰当。在汽车制造行业中,每辆汽车都需要按照一定的标准...
建造者模式是一种创建型设计模式,它允许您分步骤构建复杂对象。该模式允许用户通过不同的方式来创建对象的不同部分,最后将它们组装成一个完整的对象。 **应用场景:** - 当创建复杂对象的算法应该独立于部件及其...
- **代码实现**:通过私有构造函数和静态成员函数来实现单例模式。 **1.4 Builder模式** - **定义**:将一个复杂对象的构建与其表示分离,使得同样的构建过程可以创建不同的表示。 - **适用场景**:当创建复杂对象...
- **C++实现**: 使用私有构造函数和静态成员函数来实现单例模式。 **1.4 Builder模式** - **定义**: 将一个复杂对象的构建与其表示分离,使得同样的构建过程可以创建不同的表示。 - **目的**: 分离对象构建与表示...
就增加功能而言,装饰器模式相比生成子类更加灵活。 - **应用场景**:需要扩展功能,但不想通过继承来实现。 - **优点**:可以在运行时动态地为对象添加职责。 - **缺点**:如果过度使用装饰器模式,可能会导致...