建造者模式(Builder)

简介:      建造者模式是将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。   模式结构   建造者模式的好处:       建造者模式可以将一个产品的内部表象与产品的生产过程分割开来,从而可以使一个建造过程生成具有不同的内部表象的产品对象。

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

 

模式结构


 

建造者模式的好处:

      建造者模式可以将一个产品的内部表象与产品的生产过程分割开来,从而可以使一个建造过程生成具有不同的内部表象的产品对象。如果我们用了建造者模式,那么用户就只需要建造的类型就可以得到它们,而具体建造的过程和细节就不需要知道了。


何时使用建造者模式?

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


示例

    某年,中央电视台举办的春节联欢晚会上的一个小品,有这样一个情节:宋丹丹给赵本山出个题儿--如何把大象装到冰箱里,赵本山没答上。宋丹丹告诉赵本山标准答案:第一步把冰箱门打开,第二步把大象放进去,第三步把冰箱门关上。


   


  同理,我们可以按照这个步骤,向冰箱里装其他东西:比如,过期的牛奶,吃剩的Pizza,甚至还可以模仿俄罗斯套娃,装个冰箱(冰箱的使用详见冰箱使用手册,I bet 冰箱绝对不是这样用的。。)。。下面来看一下装大象的代码:

  

namespace 把大象装冰箱
{
    /*首先抽象出一个建造过程的类,将把“东西装在冰箱”
     * 这个过程给稳定住。就是说,不管向冰箱里面装什么东西
     * 都得按照这个步骤来,一步都不能丢。*/
    abstract class PutIntoFridge
    {
       
        public abstract void OpenFridge();
        public abstract void PutInto();
        public abstract void CloseFridge();
 
    }

    /*写一个把大象装冰箱的类,然后让这个类去继承PutIntoFridge
     * 在这个类里面,给出如何把大象装冰箱的具体实现。*/
    class PutElephantIntoFri : PutIntoFridge
    {
        private string name;

        public PutElephantIntoFri(string name)
        {
            this.name = name;
        }

        public override void OpenFridge()
        {
            Console.WriteLine("打开了冰箱门~~");

        }

        public override void PutInto()
        {
            Console.WriteLine("把 {0} 装进冰箱。", name);
            
        }

        public override void CloseFridge()
        {
            Console.WriteLine("把冰箱门关上了。");
        }
 
    }


    /*指挥者:用来指挥把东西装冰箱这个过程,用它来隔离用户与
     * 建造过程的关联。*/
    class Director
    {
        private PutIntoFridge pif;

        //构造的时候指明要实现把什么东西装冰箱
        public Director(PutIntoFridge pif)
        {
            this.pif = pif;
        }

        /*写一个把大象装冰箱的过程,用以隐藏具体的把大象装冰箱的过程
         * 使用时只需调用这一个方法就行。*/
        public void CreatePutIntoFif()
        {
            pif.OpenFridge();
            pif.PutInto();
            pif.CloseFridge();
        }
 
    }


    class Program
    {
        static void Main(string[] args)
        {
            PutElephantIntoFri peif = new PutElephantIntoFri("小象");
            Director director = new Director(peif);

            director.CreatePutIntoFif();

            Console.WriteLine(" ");


        }
    }
}

最后,运行一下,装冰箱成功。。。




  


目录
相关文章
|
3月前
|
设计模式 算法
设计模式--建造者模式 builder
这篇文章通过一个电脑购买的例子,详细解释了建造者模式的四个角色(产品类、抽象构建者、实体构建类和指导者类),并提供了相应的代码实现,阐述了建造者模式在设计复杂对象时的应用和优势。
设计模式--建造者模式 builder
|
设计模式 算法 Java
Java设计模式-建造者模式(Builder)
Java设计模式-建造者模式(Builder)
|
设计模式 算法 程序员
创建型模式 - 建造者模式(Builder Pattern)
创建型模式 - 建造者模式(Builder Pattern)
|
设计模式
创建型-Builder
Builder 模式,中文翻译为建造者模式或者构建者模式,也有人叫它生成器模式。 实际上,建造者模式的原理和代码实现非常简单,掌握起来并不难,难点在于应用场景。 直接使用构造函数或者配合 set 方法就能创建对象,为什么还需要建造者模式来创建呢?
191 0
|
设计模式 算法 Java
浅谈JAVA设计模式之——建造者模式(Builder)
将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。
156 0
浅谈JAVA设计模式之——建造者模式(Builder)
|
Java 设计模式