简说生成器模式
2018-01-22 14:34
99 查看
设计模式之生成器模式
定义
生成器模式(又名建造者模式)是设计模式的一种,将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。 —— [ 百度百科 ]解释说明
在生成器模式中,对复杂对象的创建,我们抽象化出统一的创建流程,在各个创建流程中,我们可以按需实现不同的业务逻辑。在对外显示中,我们使用统一的外部指导者,通过抽象化出的统一创建流程,创建复杂对象。代码块
public class Test { //生成器接口-构建统一的创建流程 interface Builder{ public abstract void hair(); public abstract void clothes(); public abstract void shose(); public abstract Man build(); } //具体的生成器 class ConcreteBuilder implements Builder{ private Man man = new Man(); @Override public Man build(){ hair(); clothes(); shose(); return this.man; } @Override public void hair() { man.hair = "卷发"; } @Override public void clothes() { man.clothes = "皮夹克"; } @Override public void shose() { man.shose = "帆布鞋"; } } //指导者-调用生成器生成对象 class Director{ public Director(ConcreteBuilder concreteBuilder){ this.concreteBuilder = concreteBuilder; } public Man returnMan(){ return this.concreteBuilder.build(); } private ConcreteBuilder concreteBuilder; } //产品类-被生成对象 class Man{ public String hair; public String clothes; public String shose; public void say(){ System.out.println("我的外貌特征:" + hair + "," + clothes + "," + shose); } } //测试 public static void main(String[] args) { //实例化生成器 ConcreteBuilder concreteBuilder = new Test().new ConcreteBuilder(); //实例化指导者 Director director = new Test().new Director(concreteBuilder); //实例化现有类 Man man = director.returnMan(); man.say(); } }
代码解读
以上就是完整的生成器模式代码实例。在以上代码中,我们先抽象出一个生成器接口,此接口用于约束我们的产品(Man)类的创建流程。随后创建的具体的生成器类(ConcreteBuilder),其中我们具体实现了一个复杂(Man)对象的生成过程。比如:需要什么样的发型,需要什么样的衣服,需要什么样的鞋子。
当然,上述的生成器类(ConcreteBuilder)只是一个简单示范,在生成器模式中,该类可以有很多个,不同的生成器类具有不同的业务逻辑,从而保证了生成的产品类(Man)具有不一样的属性或者行为。
最后,我们创建一个指导类,用于调用具体的生成器类,从而标准化产品类创建的外部访问接口,同时内部可以有更加复杂的逻辑,以便满足我们调用不同的生成器类创建不同的产品。
总结
优点使用生成器模式可以使客户端不必知道产品内部组成的细节。
具体的建造者类之间是相互独立的,对系统的扩展非常有利。
由于具体的建造者是独立的,因此可以对建造过程逐步细化,而不对其他的模块产生任何影响。
试用场景
需要生成一个产品对象有复杂的内部结构。每一个内部成分本身可以是对象,也可以使一个对象的一个组成部分。
需要生成的产品对象的属性相互依赖。建造模式可以强制实行一种分步骤进行的建造过程。
相关文章推荐
- Builder 生成器模式(创建模型)
- 设计模式学习笔记--Builder生成器模式
- 生成器模式(又名建造者模式、Builder Pattern)
- DotNet源代码中的模式Builder生成器模式
- 生成器模式(Builder)
- 设计模式9--生成器模式(Builder)
- 生成器模式(Builder)C++实现
- C#面向对象设计模式纵横谈——4.Builder 生成器模式(创建型模式)
- java设计模式之建造者模式(生成器模式)最好的例子。
- 设计模式解密(6) - 建造者模式(生成器模式)
- Java/Android 构建者(Builder)设计模式(又叫生成器模式)
- 生成器模式(Builder Pattern)
- [原创]C#Sql命令生成器|生成器模式(Builder)应用|数据访问层源代码
- 三、Builder 生成器模式(创建型)
- 建造者模式(生成器模式)
- JAVA设计模式 — 生成器模式(Builder)
- 设计模式(三)之生成器模式(Builder Pattern)
- 设计模式——生成器模式(Builder Pattern)
- 设计模式-生成器模式(Builder)
- Java设计模式--生成器模式