码迷,mamicode.com
首页 > Windows程序 > 详细

C# 建造者模式

时间:2015-07-12 23:00:40      阅读:267      评论:0      收藏:0      [点我收藏+]

标签:

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();
        }
    }
}

 

C# 建造者模式

标签:

原文地址:http://www.cnblogs.com/vpersie2008/p/4641583.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!