大话设计模式之建造者模式

        盘古开辟了天地,用身躯造出日月星辰、山川草木。那残留在天地间的浊气慢慢化作虫鱼鸟兽,为这寂静的世界增添了生气。这时,有一位女神女娲,在这莽莽的原野上行走。她放眼四望,山岭起伏,江河奔流,丛林茂密,草木争辉,天上百鸟飞鸣,地上群兽奔驰,水中鱼儿嬉戏,草中虫之豸跳跃,这世界按说也点缀得相当美丽了。但是她总觉得有一种说不出的寂寞,越看越烦,孤寂感越来越强烈,连自己也弄不清楚这是为什么。与山川草木诉说心中的烦躁,山川草木根本不懂她的话;对虫鱼鸟兽倾吐心事,虫鱼鸟兽哪能了解她的苦恼。

        她颓然坐在一个池塘旁边,茫然对池塘中自己的影子。忽然一片树叶飘落池中,静止的池水泛起了小小的涟漪,使她的影子也微微晃动起来。她突然觉得心头的结解开了,是呀!为什么她会有那种说不出的孤寂感?原来是世界是缺少一种像她一样的生物。想到这儿,她马上用手在池边挖了些泥土,和上水,照着自己的影子捏了起来。捏着捏着,捏成了一个小小的东西,模样与女娲差不多,也有五官七窍,双手两脚。捏好后往地上一放,居然活了起来。女娲一见,满心欢喜,接着又捏了许多。她把这些小东西叫作“人”。今天我们的大话设计就从女娲抟土造人的故事开始说起,女娲要建造一个人,那首先要造头,身体,胳膊和腿,这就关乎到一个制造工序的问题,不知道读者有没有这样的感觉,建造者模式和工程模式很接近,但是建造者模式提供了一个更加细粒度的对象的建造过程,我们先来看一下,建造者模式的结构图:

        

        依然以我们上述的女娲抟土造人为例,看看我们的代码,首先,女娲要先创建一个需要建造的对象,如下:

         

//要构造的对象
public class Robust
{
	String head;
	String body;
        String arm;
        String leg;
	public String getHead()
        {
		return head;
	}
	public void setHead(String head)
        {

		this.head = head;
	}
	public String getBody()
        {
		return body;
	}
	public void setBody(String body)
        {
		this.body = body;
	}
        public String getArm()
        {
		return arm;
	}
	public void setarm(String arm)
        {
		this.arm = arm;
	}
        public String getLeg()
        {
		return leg;
	}
	public void setLeg(String leg)
        {
		this.leg = leg;
	}
}

          然后有一个构造者的接口,其中包括了建造者会使用的建造过程

          

public interface Builder
{

	public void buidBody(String body);
	public void buidHead(String head);
        public void buidArm(String arm);
        public void buidLeg(String leg);
	public Robust getRobust();
}
public class RobustBuilder implements Builder
{

	Robust robust = new Robust();
        public void buidBody(String body)
        {
	   robust.setBody(body);
	}

	public void buidHead(String head)
        {
           robust.setHead(head);
	}
        public void buidArm(String arm)
        {
           robust.setArm(arm);
	}
        public void buidLeg(String leg)
        {
           robust.setLeg(leg);
	}

        public Robust getRobust()
        {
           return robust;
	}
}

          有了建造者之后,需要有一个指挥家来指示建造的过程:

           

//指挥建造的类

public class Director
 {

      public Robust Construct(Builder builder)
      {
	 builder.buidBody(null);
	 builder.buidHead(null);
         builder.buidArm(null);
         builder.buidLeg(null);
	 return builder.getRobust();
       }
}

        这样,女王抟土造人的过程就完成了,从代码角度来说, 如果我们希望分离复杂类型构建规则和类型内部组成,或者希望把相同的构建过程用于构建不同类型的时候可以考虑使用建造者模式。从应用角度来说, 如果我们希望解耦产品的创建过程和产品的具体配件,或者我们希望为所有产品的创建复用一套稳定并且复杂的逻辑的时候可以考虑使用建造者模式。设计之旅,未完待续......

时间: 2024-10-23 04:25:35

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

深入理解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

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

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

大话设计模式之原型模式

       外国人把那京戏叫做"Beijing Opera " 没见过那五色的油彩楞往脸上画,四击头一亮相,(哇--)美极了妙极了,简直"ok"顶呱呱 ,蓝脸的多尔敦盗御马,红脸的关公战长沙 ,黄脸的典韦白脸的曹操 ,黑脸的张飞叫喳喳-- ,细心的小朋友,仔细区分就会发现,虽然每个京剧演员都不同,但基本上只具有几种脸型,长方形,圆形,细长,然后配上不同的妆容,胡子,眉毛,头饰,服装,有的再加点儿装饰物,就成了我们所看到的不同的演员角色,国粹和我们的编程有着什么样的

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

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

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

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

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

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

设计模式之建造者模式

设计模式,六大设计原则,类的特性 总纲 http://blog.csdn.net/fenglailea/article/details/52733435 风.fox 建造者模式(Builder Pattern) 也叫生成器模式. 定义:讲一个复杂对象的构建与他的表示分离,使得同样的构建过程可以创建不同的表示 通用类图 组成 产品类 Product 通常实现了模版方法模式,也就是有模版方法和基本方法. 抽象建造者 Builder 规范产品的组建,一般是由子类实现 具体建造者 ConcreteBui