陕西队西北狼

C# 建造者模式

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

一、定义:

建造者模式(Builder)是将复杂的构建与其表示相分离,使得同样的构建可以产生不同的表示。

二、原型模式应用:

在软件系统中,有时候面临一个复杂对象的创建工作,该对象通常由各个部分对象用一定算法构成,

或者按一定的步骤组合而成,这些算法和步骤是稳定的,而构成这个对象的子对象却经常由于需求的变化而不断变化。

 

举个例子,比如一个工厂要生产奔驰和宝马两种车子,它们组装的过程基本都是不变的,都可以由

logo,车身,轮子,椅子等构成,但是这些零件在奔驰和宝马这两种车子之间又是多变的,那么将一些易变的两件与其他部件分离出来,实现解耦合,则可以轻松实现车子的升级。

 

三、建造者欧式参与者

①Builder:为创建一个 product对象的各个部件指定抽象接口;

②ConcreateBuilder 

  1>实现Builder的接口以构造和装配该产品的各个部件

  2>定义并明确它所创建的表示

③Director:构造一个使用Builder接口的对象;

④Product:表示被构造的复杂对象。ConcreateBuilder创建该产品的内部表示并定义它的装配过程。

 

在建造者模式中,Director规定了创建一个对象所需要的步骤和次序,builder则提供了一些完成这些步骤的方法,ConcreateBuilder给出了这些方法的具有实现,是对象的直接创建者。

 

四、构建者模式实现

 

Director.cs

 

namespace BuilderExample
{
    public class Director
    {
        public void Constructor(IBuilder builder)
        {
            builder.CreateLogo();
            builder.CreateBody();
            builder.CreateWheel();
            builder.CreateChair();
        }
    }
}

 

IBuilder.cs

namespace BuilderExample
{
    public interface IBuilder
    {
        void CreateLogo();
        void CreateBody();
        void CreateWheel();
        void CreateChair();
    }
}

Benz.cs

using System;

namespace BuilderExample
{
    public class Benz : IBuilder
    {
        public void CreateLogo()
        {
            Console.WriteLine("创建奔驰的logo");
        }

        public void CreateBody()
        {
            Console.WriteLine("创建奔驰的身体");
        }

        public void CreateWheel()
        {
            Console.WriteLine("创建奔驰的轮子");
        }

        public void CreateChair()
        {
            Console.WriteLine("创建奔驰的椅子");
        }
    }
}

 

BMW.cs

using System;

namespace BuilderExample
{
    public class BMW : IBuilder
    {
        public void CreateLogo()
        {
            Console.WriteLine("创建宝马的logo");
        }

        public void CreateBody()
        {
            Console.WriteLine("创建宝马的身体");
        }

        public void CreateWheel()
        {
            Console.WriteLine("创建宝马的轮子");
        }

        public void CreateChair()
        {
            Console.WriteLine("创建宝马的椅子");
        }
    }
}

 

Program.cs

using System;

namespace BuilderExample
{
    class Program
    {
        static void Main(string[] args)
        {
            Director director = new Director();

            director.Constructor(new Benz());

            director.Constructor(new BMW());

            Console.ReadLine();
        }
    }
}

 

posted @ 2015-07-12 21:36  PS-Jerry  阅读(640)  评论(0编辑  收藏  举报