`

设计模式之Builder

    博客分类:
  • java
阅读更多

Builder模式定义 :
将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示.

Builder模式是一步一步创建一个复杂的对象,它允许用户可以只通过指定复杂对象的类型和内容就可以构建它们.用户不知道内部的具体构建细节.Builder模式是非常类似抽象工厂模式,细微的区别大概只有在反复使用中才能体会到.

为何使用?
是为了将构建复杂对象的过程 和它的部件 解耦.注意: 是解耦过程 部件 .

因为一个复杂的对象,不但有很多大量组成部分,如汽车,有很多部件:车轮 方向盘 发动机还有各种小零件等等,部件很多,但远不止这些,如何将这些部件装配成一辆汽车,这个装配过程也很复杂(需要很好的组装技术),Builder模式就是为了将部件和组装过程分开.

如何使用?
首先假设一个复杂对象是由多个部件组成的,Builder模式是把复杂对象的创建和部件的创建分别开来,分别用Builder类和Director类来表示.

首先,需要一个接口,它定义如何创建复杂对象的各个部件:

public interface Builder {

//创建部件A  比如创建汽车车轮
void buildPartA();
//创建部件B 比如创建汽车方向盘
void buildPartB();
//创建部件C 比如创建汽车发动机
void buildPartC();

//返回最后组装成品结果 (返回最后装配好的汽车)
//成品的组装过程不在这里进行,而是转移到下面的Director类中进行.
//从而实现了解耦过程和部件
Product getResult();

}

 用Director构建最后的复杂对象,而在上面Builder接口中封装的是如何创建一个个部件(复杂对象是由这些部件组成的),也就是说Director的内容是如何将部件最后组装成成品:

public class Director {

private Builder builder;

public Director( Builder builder ) {
this.builder = builder;
}
// 将部件partA partB partC最后组成复杂对象
//这里是将车轮 方向盘和发动机组装成汽车的过程
public void construct() {
builder.buildPartA();
builder.buildPartB();
builder.buildPartC();

}

}

 Builder的具体实现ConcreteBuilder:
通过具体完成接口Builder来构建或装配产品的部件;
定义并明确它所要创建的是什么具体东西;
提供一个可以重新获取产品的接口:

public class ConcreteBuilder implements Builder {

Part partA, partB, partC;
public void buildPartA() {
//这里是具体如何构建partA的代码

};
public void buildPartB() {
//这里是具体如何构建partB的代码
};
public void buildPartC() {
//这里是具体如何构建partB的代码
};
public Product getResult() {
//返回最后组装成品结果
};

}

 

复杂对象:产品Product:

public interface Product { }

复杂对象的部件:

public interface Part { }

分享到:
评论

相关推荐

    java设计模式之Builder&Decorator

    java设计模式之Builder&Decorator,java设计模式之Builder&Decorator

    设计模式之建造者Builder模式

    NULL 博文链接:https://wy649898543.iteye.com/blog/1431751

    JAVA设计模式chm文档

    设计模式之Builder 设计模式之Singleton(单态) 结构模式: 设计模式之Facade(外观) 设计模式之Proxy(代理) 设计模式之Adapter(适配器) 设计模式之Composite(组合) 设计模式之Decorator(油漆工) 设计模式之Bridge 设计...

    设计模式文档 chm

    设计模式之Builder 设计模式之Singleton(单态) 结构模式: 设计模式之Facade(外观) 设计模式之Proxy(代理) 设计模式之Adapter(适配器) 设计模式之Composite(组合) 设计模式之Decorator(油漆工) 设计模式之Bridge 设计...

    Android设计模式之Builder模式详解

    主要为大家详细介绍了Android设计模式之Builder模式,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

    Android编程设计模式之Builder模式实例详解

    本文实例讲述了Android编程设计模式之Builder模式。分享给大家供大家参考,具体如下: 一、介绍 Builder模式是一步一步创建一个复杂对象的创建型模式,它允许用户在不知道内部构建细节的情况下,可以更精细的控制...

    GoF 23种设计模式的详解与应用

    创建模式:设计模式之Factory,设计模式之Prototype(原型),设计模式之Builder,设计模式之Singleton(单态). 结构模式:设计模式之Facade(外观),设计模式之Proxy(代理),设计模式之Adapter(适配器),设计模式之Composite...

    C#设计模式之Builder生成器模式解决带老婆配置电脑问题实例

    本文实例讲述了C#设计模式之Builder生成器模式解决带老婆配置电脑问题。分享给大家供大家参考,具体如下: 一、理论定义 生成器模式 又叫:建造者模式,它 可以 把一个 复杂的对象,分步骤创建。 二、应用举例 需求...

    Android设计模式之Builder模式解析

    主要为大家详细介绍了Android设计模式之Builder模式解析的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

    JAVA设计模式23种

    设计模式之Builder 汽车由车轮 方向盘 发动机很多部件组成,同时,将这些部件组装成汽车也是一件复杂的工作,Builder模式就是将这两 种情况分开进行。 设计模式之Prototype(原型) 用原型实例指定创建对象的种类,...

    Java设计模式之Builder建造者模式

    主要为大家详细介绍了Java设计模式之Builder建造者模式的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

    设计模式整理(很全)

    设计模式之Builder 汽车由车轮 方向盘 发动机很多部件组成,同时,将这些部件组装成汽车也是一件复杂的工作,Builder模式就是将这两种情况分开进行。 设计模式之Prototype(原型) 用原型实例指定创建对象的种类,...

    二十三种设计模式【PDF版】

    设计模式之 Builder 汽车由车轮 方向盘 发动机很多部件组成,同时,将这些部件组装成汽车也是一件复杂的工作,Builder 模式就是将这两 种情况分开进行。 设计模式之 Prototype(原型) 用原型实例指定创建对象的...

    设计模式之创建模式Builder

    将一个复杂对象的构造与它的表示分离,使同样的构建 过程可以创建不同的表示,这样的设计模式被称为建造者模式。

    builder设计模式

    builder设计模式

    builder设计模式源码

    一个builder 设计 模式 的源码,

Global site tag (gtag.js) - Google Analytics