`
zddava
  • 浏览: 243670 次
  • 性别: 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-设计模式-创建型模式-建造者模式

    设计模式——建造者模式

    建造者模式是一种结构型设计模式,它允许我们分步骤创建复杂对象,而无需暴露构建过程的内部细节。这种模式在Java编程中非常常见,尤其是在处理需要多种构建方式或需要隔离对象构造过程的场景。 建造者模式的核心...

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

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

    设计模式之建造者模式代码示例

    建造者模式(Builder Pattern)是软件工程中一种用于创建对象的抽象工厂方法,它将复杂的构建过程分解为一系列步骤,使得构建过程可以独立于其表示进行。这种模式允许客户端使用相同的构建过程创建不同表现形式的...

    设计模式-建造者模式

    建造者模式(Builder Pattern)是一种创建型设计模式,它提供了一种方法来分步骤构建复杂的对象,使得构建过程和表示分离,使得同样的构建过程可以创建不同的表示。这种模式经常在对象的构造过程中需要进行多种选择...

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

    **建造者模式(Builder Pattern)**是软件设计模式中的一种创建型模式,它允许我们分步骤构建复杂的对象,而无需暴露构建过程。在C++中,这种模式常用于将对象的创建过程与使用过程分离,使得对象的构建更加灵活,...

    Java设计模式-建造者模式详解

    Java设计模式-建造者模式详解将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。生成器模式(Builder)是使用多个“小型”工厂来最终创建出一个完整对象。当我们使用Builder的时候,...

    java常用设计模式-建造者模式

    -java常用设计模式-建造者模式是java中的一种创建型设计模式,它允许开发者通过一步一步地构建复杂对象来创建不同类型的对象。 建造者模式的定义 建造者模式是一种创建型设计模式,它允许开发者通过一步一步地构建...

    设计模式实验报告-建造者

    建造者模式是一种软件设计模式,属于创建型模式之一,主要用于解决创建复杂对象的问题。在实际应用中,当对象的构造过程过于复杂,涉及到多个属性或者子对象的组合时,直接通过构造函数创建可能会导致代码混乱、难以...

    设计模式之建造者模式

    建造者模式是软件设计模式中的一种,属于创建型模式,它的主要目的是将复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。在Java的23种设计模式中,建造者模式是一个非常实用且重要的模式。 ...

    设计模式之建造者Builder模式

    **建造者模式(Builder Pattern)**是软件设计模式中的一种,属于创建型模式。它将复杂对象的构建过程与它的表示分离,使得同样的构建过程可以创建不同的表示。建造者模式通常用于那些需要大量构造参数的对象,通过...

    C#设计模式之建造者模式

    建造者模式是软件设计模式中的一种,主要用于将复杂的对象构建过程与...通过以上分析,我们可以看出,"C#设计模式之建造者模式"在实际编程中有着广泛的应用,它简化了复杂对象的创建,提高了代码的可读性和可维护性。

    设计模式专题之(四)建造者模式---设计模式建造者模式示例代码(python--c++)

    在《设计模式专题之(四)建造者模式》中,我们将探讨如何通过Python和C++实现建造者模式。首先,我们要理解建造者模式的基本组件: 1. **产品(Product)**:这是要构建的复杂对象。在Python和C++中,这通常会定义...

    4.设计模式-建造者模式1

    "设计模式-建造者模式" 设计模式是软件开发中常用的解决问题的方法和模式,旨在提高软件的可维护性、灵活性和可重用性。设计模式可以分为三大类:创建型模式、结构型模式和行为型模式。今天,我们将讨论创建型模式...

    设计模式例子,观察者模式,建造者模式

    建造者模式是一种创建型设计模式,它将复杂对象的构建与其表示分离,使得同样的构建过程可以创建不同的表示。这在需要构建复杂对象,而其构建步骤又需要保持一致性的场景中非常有用。 1. **概念**: - 建造者...

    原创:设计模式之建造者模式生动实例

    建造者模式,是设计模式中的一种创建型模式,它的核心思想是将复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。在Java编程中,这种模式经常用于生成对象,特别是当对象的创建过程较为复杂时,...

    C# 设计模式-建造者模式

    建造者模式(Builder Pattern)是软件工程中一种用于创建对象的抽象工厂方法,它将复杂的对象构造过程分离开来,使得相同的构造过程可以创建不同的表示。这种模式在C#编程中广泛应用于创建对象的复杂性较高,或者...

    设计模式之创建型模式实验.docx

    在本实验中,我们将探讨五种常见的创建型设计模式:简单工厂模式、工厂方法模式、抽象工厂模式、建造者模式和原型模式,并在Java环境中实现这些模式。 1. **简单工厂模式**: - **概念**:简单工厂模式通过一个...

    设计模式-建造者模式(讲解及其实现代码)

    建造者模式,是一种创建型设计模式,它提供了一种创建对象的最佳方式,特别是在对象的构建过程比较复杂,需要多个步骤时。在建造者模式中,我们创建一个指导对象(Director),该对象负责组织构建过程,而具体的构建...

Global site tag (gtag.js) - Google Analytics