`
zddava
  • 浏览: 240560 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

了解设计模式 之 创建模式(二) -- 建造者模式

阅读更多
下面来看看第二个创建模式,建造者模式。

2. 建造者模式(Builder Pattern)

建造者模式是为了把创建复杂对象的过程与构建它的各个部件的过程解耦和而产生的。单说这个感觉很抽象,还是用例子来说明吧。

还是举上边的那个方便面厂的例子吧。这里主要不是讲怎么创建不懂地域口味的方便面了,主要描述制作方便面的过程。

首先,应用建造者模式需要三个基本元素,Builder、Director和Product。客户端是通过Builder来获取Product的,而Director来控制Builder创建的各个部件的组装。实现了不同的部件创建和对象创建的分离。不过这么说还是很抽象,下面来具体看看。

首先,定义一个Builder接口,它负责生产方便面。

public Interface Builder{
	public void buildInstantNoodle();// 制造面饼部件

	public void buildCondiment();// 制造调味品部件

	public BaggedInstantNoodle getProduct();// 得到袋装方便面
}


然后来定义一个Director。

public class Director{
	Builder builder = null;
	public Director(Builder builder){
		this.builder = builder;
	}

	public assemble(){// 组装部件
		builder.buildInstantNoodle();
		builder.buildCondiment();
	}
}


接下来是一个Builder的实现类,一个北京口味方便面的Builder

public class BeijingBaggedInstantNoodleBuilder implements Builder{
	InstantNoodle noodle;
	Condiment condiment;
	public void buildInstantNoodle(){// 制造面饼部件
		noodle = new BeijingInstantNoodle();
	}

	public void buildCondiment(){// 制造调味品部件
		condiment =  new BeijingCondiment();
	}

	public BaggedInstantNoodle getProduct(){// 得到袋装方便面
		return new BaggedInstantNoodle(noodle, condiment);
	}
}


最后是客户端的程序了:

public class Client{
	public static void main(String[] args){
		test();
	}
	public static void test() {
		// 制作北京口味的方便面
		Builder builder = new BeijingBaggedInstantNoodleBuilder();// 实例化Builder
		Director director = new Director(builder);//实例化Director
		director.assemble();//组装部件
		BaggedInstantNoodle = builder.getProduct();//得到产品
	}
}


通过上边的代码可以看出,Builder其实就是工人,他具备一切生产产品部件的能力。但是他不会将生产的部件进行组装,这个时候就需要一个Director出现了,他控制了Builder的部件的组装过程。所以应用了这个模式之后,Builder只管专心的负责他的部件生产(例如buildInstantNoodle()和buildCondiment()方法),至于怎么将部件组装起来自然会有Director来指导(例如assemble()方法)。最后,客户端会向Builder来索要产品(Product,上例中是BaggedInstantNoodle)而不是Director,因为Director只负责过程的组装,他并没有最终产品。

这样,通过Builder模式,就实现了部件的生产(Builder的各个build方法)和部件的构建过程的解耦和,它可以使用在创建复杂对象的算法应该独立于该对象的组成部分和装配方式,还有构造过程要求被构造的对象可变的场合。比如构建一个“汽车”这种对象,组成汽车的各个部分就是可变的,而装配汽车的方法与汽车部件也是确实相对独立的。

当然,在Builder中直接使用一个assemble()方法也可以实现这个过程,但是,Builder的职责就不再单一了(不再是单一的部件生产者),加入Director可以实现类的单一职责。还有最主要的因素还是实现部件生产和构建的解耦和,这两个过程可以独立的变化而不会影响其他的部分。举个例子,

比如一个装配汽车的程序,同一个系列的汽车可能组装过程相同,但是部件可能会有所不同,这样,他们就可以重用的Director,而使用不同的Builder了。同样也存在重用Builder而更换Director的情况,这个就要具体情况具体分析了。

它的类图如下所示:

  • 大小: 13.2 KB
分享到:
评论
1 楼 IceWee 2012-06-28  
创建者模式也基本懂了,就犹如一个人汽车上的零件都会制造,但他却组装不出汽车来,需要另外一个人来指挥他如何组装,通过二人合作制造出一辆完整的汽车。

相关推荐

    JAVA-设计模式-创建型模式-建造者模式

    JAVA-设计模式-创建型模式-建造者模式

    c++设计模式-创建型模式-建造者模式

    c++设计模式-创建型模式-建造者模式-qt工程源码,c++实现

    设计模式-------建造模式

    设计模式之---建造模式 1,建造模式属于对象的创建模式,是将一个产品的内部表象和产品的生产分割出来 2.使用原因:为了将构建复杂对象的过程和它的不见解耦; 3 使用情况:建造模式利用一个导演着对象和一个具体...

    设计模式课件大全

    设计模式05-建造者、原型模式 设计模式06-适配器、桥接、组合模式 设计模式07-组合模式、装饰模式 设计模式09-外观模式、享元模式 设计模式10-代理模式、结构型模式大复习 设计模式11-行为模式-责任链、命令模式 ...

    java设计模式【之】建造者模式【源码】【场景:车辆组装】

    java设计模式【之】建造者模式【源码】【场景:车辆组装】 将复杂的对象构建,与对象的使用进行分离 用户只需要通过简单流程即可创建出对象 方法调用顺序,步骤的不同实现 优点:封装性号,创建和使用分离,扩展性...

    Java创建型设计模式之建造者模式详解.rar

    Java创建型设计模式之建造者模式详解.rar

    设计模式 创建型模式 Builder模式(建造者)

    担任这个角色的类调用具体建造者角色以创建产品对象。导演者并没有产品类的具体知识,真正拥有产品类的具体知识的是具体建造者对象。 ◆产品(Product): 产品便是建造中的复杂对象。 详细见博客 ...

    c++ 建造者模式实例

    如果我们用了建造者模式,那么用户就只需指定需要建造的类型就可以得到它们,而具体建造的过程和细节都不需要了解。 下面的例子,以求职人来公司应聘,HR需要把他的求职简历输入电脑做存档。 首先HR是不可能让求职...

    设计模式-C++

    创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。 结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。 行为型模式,共十一种:...

    软件设计模式-2021秋-实验1-创建型模式实验报告附源码和类图.zip

    软件设计模式-2021秋-实验1-创建型模式实验报告附源码和类图.zip 工厂方法模式、建造者模式、抽象工厂模式、单例模式

    java 23种设计模式.zip

    1.创建型模式:工厂模式、抽象工厂模式、单例模式、建造者模式、原型模式。 2.结构型模式:适配器模式、桥接模式、装饰模式、组合模式、外观模式、享元模式、代理模式。 4.行为型模式:模板方法模式、命令模式、...

    46丨建造者模式:详解构造函数、set方法、建造者模式三种对象创建方式1

    46 | 建造者模式:详解构造函数、set方法、建造者模式三种对象创建方式2020-02-17 王争设计模式之美进入课程讲述:冯永吉时长 10:31大小 8.4

    java常用23中设计模式

    创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。 结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。 行为型模式,共十一种:...

    23种设计模式java源码

    创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。 结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。 行为型模式,共十一种:...

    Java建造者模式源码

    Java 常见创建型模式中的建造者模式及其实际开发中的变种模式

    23种设计模式项目实例

    创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。 结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。 行为型模式,共十一种:...

    设计模式之创建模式Builder

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

    创建型设计模式(下)

    介绍了三种创建型设计模式:单例设计模式;原型设计模式;建造者设计模式;

    java设计模式示例

    创建型模式(5种):工厂方法模式,抽象工厂模式,单例模式,建造者模式,原型模式。 结构型模式(7种):适配器模式,装饰器模式,代理模式,外观模式,桥接模式,组合模式,享元模式。 行为型模式(11种):策略...

    23种设计模式 -设计模式图解.7z

    创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。 结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。 行为型模式,共十一种:...

Global site tag (gtag.js) - Google Analytics