建造者模式 指挥者的作用

原创 2015年11月18日 17:02:03


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

主要用于创建一些复杂的对象,这些对象内部构建间的建造顺序通常是稳定的,但对象内部的构建通常面临着复杂的变化。


用了建造者模式,用户只需指定需要建造的类型就可以得到它们,而具体的过程和细节就不需要知道了。
而建造者中的一个非常重要的类就是指挥者类,它用来控制建造过程,也用它来隔离用户与建造过程的关联。

指挥者类是建造模式的核心和灵魂所在,主要完成同样的构建过程可以创建不同的表示。从上面的例子可以看到,如果缺少指挥者类,那么就不能算是建造者模式了,只能说是定义了一个接口或抽象类,规定了必须实现哪些功能罢了。指挥者类,不仅指出了对象的建造顺序,还把用户与建造过程分离,并为可能发生的变化提供了一个灵活的处理方法,使建造顺序的改变或需求的改变不会引起大的改动也不会改变程序的结构。

创建者例子:
 static void Main(string[] args)
        {
            PersonBuilder fatPerson = new FatPerson();
            directorA dr = new directorA(fatPerson);
            Person p = fatPerson.GetResult();
            p.Show();
            Console.Read();
        }

//建造者模式
//要被创建的对象
public class Person
{
    List<string> parts = new List<string>();
    public void Add(string part)
    {
        parts.Add(part);
    }
    public void Show()
    {
        parts.ForEach(str=>Console.WriteLine(str));
    }
}
/// <summary>
/// 小人创建者
/// </summary>
public abstract class PersonBuilder
{
    public abstract void builderHeader(); //创建头
    public abstract void builderHand();   //创建手
    public abstract Person GetResult();
}
/// <summary>
/// 胖小人,完成具体的创建细节
/// </summary>
public class FatPerson : PersonBuilder
{
    Person per = new Person();
    public override void builderHeader()
    {
        per.Add("创建胖人的胖头!");
    }
    public override void builderHand()
    {
        per.Add("创建胖人的大手!");
    }
    public override Person GetResult()
    {
        return per;
    }
}
/// <summary>
/// 瘦小人,完成具体的创建细节
/// </summary>
public class ThinPerson : PersonBuilder
{
    Person per = new Person();
    public override void builderHeader()
    {
        per.Add("创建瘦人的小头!");
    }
    public override void builderHand()
    {
        per.Add("创建瘦人的小手!");
    }
    public override Person GetResult()
    {
        return per;
    }
}
/// <summary>
/// 指挥者,完成对创建顺序的控制,完成创建过程的分离
/// </summary>
public class directorA
{
    public directorA(PersonBuilder builder)
    {
        builder.builderHand();
        builder.builderHeader();
    }
}

设计模式(三)建造者模式

建造者模式(builder)是创建一个复杂对象的创建型模式,将构建复杂对象的过程和它的部件解耦,使得构建过程和部件的表示分离开来。 例如我们要DIY一个台式机电脑,我们找到DIY商家,我们可以要求这台...

设计模式读书笔记-----建造者模式

流水作业大家应该都清楚吧!在流水作业中,我们可以将一些复杂的东西给构建出来,例如汽车。我们都知道汽车内部构件比较复杂,由很多部件组成,例如车轮、车门、发动机、方向盘等等,对于我们用户来说我们并不需要知...
  • chenssy
  • chenssy
  • 2013年09月07日 21:22
  • 8251

设计模式——建造者模式解析

1.  建造者模式介绍建造者模式定义:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。 建造者模式包括的角色:(1)Builder:给出一个抽象接口或抽象类,以规范产品的建造...

设计模式(三)建造者模式

建造者模式(builder)是创建一个复杂对象的创建型模式,将构建复杂对象的过程和它的部件解耦,使得构建过程和部件的表示分离开来。 例如我们要DIY一个台式机电脑,我们找到DIY商家,我们可以要求这台...

曙光到来,我的新书《Android进阶之光》已出版(内含勘误)

2016年我开始建立了自己的知识体系,所有的文章都是围绕着这个体系来写,随着这个体系的慢慢成长,开始有很多出版社联系我写书,因为比较看好电子工业出版社,就顺理成章的开始了《Android进阶之光》这本...

建造者模式中指挥者类的作用

在学习建造者模式时,一直有一个问题想不明白,就是为什么要存在指挥者类。感觉没有指挥者类也完全同样的简单快捷,甚至比没有指挥者类更容易理解。 以下是本人用C++写的一个例子程序: //Bui...

C++设计模式——建造者模式(一般模式,省略指挥者、引入钩子)

在内蒙古这辽阔的草原上,放养着成千上万的奶牛。蒙牛集团在这里崛起,迅速抢占中国大半牛奶市场,造就了一个商业帝国。蒙牛集团牛奶生产流程大致是这样的: 放养奶牛--->牛奶加工--->牛奶包装--->销售...
  • swqqcs
  • swqqcs
  • 2014年09月08日 21:12
  • 762

Android利用建造者模式自定义Dialog

  • 2016年03月10日 17:49
  • 3.52MB
  • 下载

建造者模式 C++实现

  • 2009年10月04日 23:41
  • 15KB
  • 下载

谁是“倒”王选的幕后指挥者?

谁是“倒”王选的幕后指挥者?回顾历史,1974年4月8日,国家计划经济委员会(以下简称“国家计委”)将“汉字计算机信息处理重大工程”报请国务院,经周恩来总理批准正式立项。后来,人们又将该工程称为“74...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:建造者模式 指挥者的作用
举报原因:
原因补充:

(最多只允许输入30个字)