建造者模式比喻
女生最爱听的就是“我爱你”这句话了,见到不同地方的女生,要能够用她们的方言跟她说这句话哦,我有一个多种语言翻译机,上面每种语言都有一个按键,见到不同地方的女生我只要按对应的键,它就能够用相应的语言说出“我爱你”这句话了,国外的女孩也可以轻松搞定,这就是我的“我爱你”Builder建造者模式。
建造者模式意图
建造者模式(Builder)将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。
建造者模式类图

建造者模式实现
/// <summary>
/// 建造者模式抽象类,用来指定创建对象的抽象接口
/// </summary>
abstract class Translator
{
public abstract string SayLove();
}
/// <summary>
/// 具体建造者中文版我爱你,实现Translator接口。
/// </summary>
class Trans_CN:Translator
{
public override string SayLove()
{
return "我爱你!";
}
}
/// <summary>
/// 具体建造者英文版我爱你,实现Translator接口。
/// </summary>
class Trans_EN:Translator
{
public override string SayLove()
{
return "I Love You!";
}
}
/// <summary>
/// 按键指挥管理类,根据用户的需求说不同的语言。
/// </summary>
class ManageKey
{
private Translator t;
public ManageKey(Translator t)
{
this.t = t;
}
public string Say()
{
return t.SayLove();
}
}
/// <summary>
/// 客户端应用建造者模式
/// </summary>
class Program
{
static void Main(string[] args)
{
//向北京姑娘表达爱意
Trans_CN cn = new Trans_CN();
ManageKey key = new ManageKey(cn);
Console.WriteLine(key.Say());
Console.Read();
}
}
建造者模式总结
这个机器只支持说一句”我爱你”这样的句子这个动作,也就是说建造者模式在创建一些复杂对象时要求对象内部的构建是稳定的,但是可以支持多种语言,即每个建造过程可以生产具有不同内部表象的产品对象,使得产品内部表象可以独立的变化,客户不必知道产品内部组成的细节。