Unity学习笔记:设计模式-Builder (建造器)

关键词:

复杂对象:对象中的成员可能是其它类型的对象

复杂对象的结构是稳定的,但是组成结构的具体对象是变化的。

意图:

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

适用性:

•  当创建复杂对象的算法应该独立于该对象的组成部分以及它们的装配方式时。

•  当构造过程必须允许被构造的对象有不同的表示时

案例:(服务员根据用户选择对象 端来具体的餐食)

using System;

namespace Builder_DesignPattern
{  
    class 服务员
    {
        public void Construct(套餐 abstractBuilder)
        {
            abstractBuilder.返回主食();
            if (1 == 1) //represents some local decision inside director
            {
                abstractBuilder.返回饮料();
            }
            abstractBuilder.返回菜();
        }
    }
    abstract class 套餐
    {
        abstract public void 返回主食();
        abstract public void 返回饮料();
        abstract public void 返回菜();
    }

    // These two classes could be part of an application 
    // =================================================

    class 红烧肉套餐 : 套餐
    {
        override public void 返回主食()
        {
            // Create some object here known to 红烧肉套餐
            Console.WriteLine("米");
        }

        override public void 返回饮料()
        {
            // Create some object here known to 红烧肉套餐
            Console.WriteLine("可乐");
        }

        override public void 返回菜()
        {
            // Create some object here known to 红烧肉套餐
            Console.WriteLine("红烧肉菜");
        }
    }

    /// <summary>
    ///    Summary description for Client.
    /// </summary>
    public class Client
    {
        public static void Main(string[] args)
        {
            红烧肉套餐 concreteBuilder = new 红烧肉套餐();
            服务员 director = new 服务员();
            director.Construct(concreteBuilder);

            Console.ReadKey();
        }
    }
}

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值