设计模式之建造者模式

设计模式,六大设计原则,类的特性

总纲
http://blog.csdn.net/fenglailea/article/details/52733435
风.fox

建造者模式(Builder Pattern)

也叫生成器模式。
定义:讲一个复杂对象的构建与他的表示分离,使得同样的构建过程可以创建不同的表示

通用类图

组成

  • 产品类 Product
    通常实现了模版方法模式,也就是有模版方法和基本方法。
  • 抽象建造者 Builder
    规范产品的组建,一般是由子类实现
  • 具体建造者 ConcreteBuilder
    实现抽象类定义的所有方法,并且返回一个组建好的对象
  • 导演类 Director
    负责安排已有模块的顺序,然后告诉 Builder 开始建造

案例

JAVA

//产品类
public class Product{
    public void doSometing(){
        ...
    }
}

//抽象建造者
public abstract class Builder{
    // 设置产品的不同部分,以获得不同的产品
    public abstract void setPart();
    // 建造产品
    public abstract Product buildProduct();
}

// 具体建造者
public class ConcreteProduct extends Builder{
    private Product product = new Product();
    // 设置产品零件
    public void setPart(){
        。。。。
    }
    // 建造产品
    public Product buildProduct(){
        return product;
    }
}

//导演类
public class Director{
    private Builder builder =new ConcreteProduct();
    // 构建不同的产品
    public Product getAProduct(){
        builder.setPart();
        /**
        * 设置不同的零件,产生不同的产品
        */
        return builder.buildProduct();
    }
}

如果有多个产品类就有几个具体的建造者,而且这个产品类具有相同接口或抽象类。
导演类起到封装的作用,避免高层模块深度到建造者内部的实现类。当然,在建造者模式比较庞大时,导演类可以有多个。

优点

封装性
建造者独立,容易扩展
便于控制细节风险

使用场景

相同的方法,不同的执行顺序,产生不同的事件结果时,可以采用该模式
多个部件或零件,都可以装配到一个对象中,但是产生的运行结果又不相同时,可以使用该模式
产品类非常复杂,或者产品类中的调用顺序不同产生了不同的效能,这个时候使用建造者模式非常适合
在对象创建过程中会使用到系统中的一些其他对象,这些对象在产品对象的创建过程中不易得到时,也可以采用建造者模式封装该对象的创建过程

时间: 2024-10-28 07:41:46

设计模式之建造者模式的相关文章

深入理解JavaScript系列(27):设计模式之建造者模式详解

 这篇文章主要介绍了深入理解JavaScript系列(27):设计模式之建造者模式详解,建造者模式可以将一个复杂对象的构建与其表示相分离,使得同样的构建过程可以创建不同的表示,需要的朋友可以参考下     介绍 在软件系统中,有时候面临着"一个复杂对象"的创建工作,其通常由各个部分的子对象用一定的算法构成:由于需求的变化,这个复杂对象的各个部分经常面临着剧烈的变化,但是将它们组合在一起的算法确相对稳定.如何应对这种变化?如何提供一种"封装机制"来隔离出"复

C#设计模式(5)——建造者模式(Builder Pattern)

原文:C#设计模式(5)--建造者模式(Builder Pattern) 一.引言 在软件系统中,有时需要创建一个复杂对象,并且这个复杂对象由其各部分子对象通过一定的步骤组合而成.例如一个采购系统中,如果需要采购员去采购一批电脑时,在这个实际需求中,电脑就是一个复杂的对象,它是由CPU.主板.硬盘.显卡.机箱等组装而成的,如果此时让采购员一台一台电脑去组装的话真是要累死采购员了,这里就可以采用建造者模式来解决这个问题,我们可以把电脑的各个组件的组装过程封装到一个建造者类对象里,建造者只要负责返还

乐在其中设计模式(C#) - 建造者模式(Builder Pattern)

原文:乐在其中设计模式(C#) - 建造者模式(Builder Pattern)[索引页][源码下载] 乐在其中设计模式(C#) - 建造者模式(Builder Pattern) 作者:webabcd 介绍 将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示. 示例 用同样的构建过程创建Sql和Xml的Insert()方法和Get()方法. MessageModel using System;using System.Collections.Generic;using Sy

设计模式:建造者模式(Builder)

 建造者模式:是将一个复杂的对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示.  建造者模式通常包括下几个角色: 1. builder(抽象建造者):给出一个抽象结论,以规范产品对象的各个组成成分的建造.这个接口规定要实现复杂对象的那些部分的创建,并不涉及具体的对象部件的创建. 2. ConcreteBuilder(具体建造者):实现Builder接口,针对不同的商业逻辑,具体化复杂对象的各部分的创建.在构造过程完成后,提供产品的实例. 3. Director(指导者):调用具体建

【秒懂设计模式】建造者模式

 秒懂设计模式--建造者模式 (四)建造者模式 1.先解释一下,什么是建造者模式呢? [官方定义]将一个复杂对象的构建,与它的表示分离,使得同样的构建过程可以创建不同的表示. [理解]官方定义过于抽象,让我们把它做一个拆分,分解成四个方面理解: ①复杂对象的表示: ②复杂对象的构建过程: ③可分离的通用构建过程,也适用于其它复杂对象的表示: ④适用于一些基本部件不会变,而其组合经常变化的时候. 2.接着,让我们再伴随一个例子,进一步清晰的理解这个定义: [举例]常去KFC的朋友,一般都会发现,其

C++设计模式之建造者模式_C 语言

建造者模式 在GOF的<设计模式 可复用面向对象软件的基础>中是这样说的:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示. 这句话,似懂非懂的.一个复杂对象的创建,其通常是由很多的子对象构成:如果一个对象能够直接就创建好了,那么也不会称之为复杂对象.由于项目中需求的变化,这个复杂对象的各个部分经常会发生剧烈的变化,但是,不管怎么变化,将它们组合在一起,组成一个复杂的对象的事实是不会变的.建造者模式就提供了一种"封装机制"来将各个对象的变化隔离开,最

理解java设计模式之建造者模式_java

建造者模式(Builder Pattern)主要用于"分步骤构建一个复杂的对象",在这其中"分步骤"是一个稳定的算法,而复杂对象的各个部分则经常变化.因此, 建造者模式主要用来解决"对象部分"的需求变化. 这样可以对对象构造的过程进行更加精细的控制. package com.shejimoshi.create.Builder; /** * 功能:意图是将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示 * 适用性: * 当创

php设计模式 Builder(建造者模式)

复制代码 代码如下: <?php /** * 建造者模式 * * 将一个复杂对象的构建与它的表示分离,使用同样的构建过程可以创建不同的表示 */ class Product { public $_type = null; public $_size = null; public $_color = null; public function setType($type) { echo "set product type<br/>"; $this->_type =

设计模式学习——建造者模式(生成器模式)

所有配套代码均在github上:https://github.com/ZHONGHuanGit/DesignPattern 简介: 建造者模式也叫做生成器模式,定义为:封装一个产品的构造过程,并且按此步骤构造. 建造者模式(生成器模式)属于创建类模式,和工厂模式相比,你会觉得有点类似,但是有区别之处.不过,建议在看下去之前,得明白三个工厂模式,如果你记得不太清楚了,可以看这里,简单工厂,工厂方法,抽象工厂. UML类图: 看一下uml类图.这一部分,如果不清楚,可以先看下面的场景部分,再回过头来