关键词:组装
复杂对象:对象中的成员可能是其它类型的对象
复杂对象的结构是稳定的,但是组成结构的具体对象是变化的。
意图:
将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。
适用性:
• 当创建复杂对象的算法应该独立于该对象的组成部分以及它们的装配方式时。
• 当构造过程必须允许被构造的对象有不同的表示时
案例:(服务员根据用户选择对象 端来具体的餐食)
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();
}
}
}