码迷,mamicode.com
首页 > 其他好文 > 详细

设计模式学习总结(五)创建者模式(Builder)

时间:2017-06-30 01:12:26      阅读:271      评论:0      收藏:0      [点我收藏+]

标签:lnl   tla   dir   oar   部件   new   中间   实例   针对   

  创建者模式,主要针对某些产品有类似的生产步骤,且有需要有先后顺序的进行各个部件的生成。

  一、示例展示:

  通过学习及总结,以下是我完成的创建者模式的示例:

  1.创建产品类:Laptop

技术分享
public class Laptop
{
    ArrayList LaptopParts = new ArrayList();
    public void AddParts(string PartName)
    {
        LaptopParts.Add(PartName);
    }

    public void ShowPartList()
    {
        foreach (string part in LaptopParts)
        {
            Console.WriteLine(part);
        }
    }
}
View Code

  2. 创建抽象创建者角色:AbstractBuilder

技术分享
public abstract class AbstractBuilder
{
    public abstract void CreateCPU();
    public abstract void CreateScreen();
    public abstract void CreateKeyboard();
    public abstract Laptop GetLaptop();
}
View Code

  3. 创建具体创建者角色:AppleLaptopBuilder

技术分享
public class AppleLaptopBuilder : AbstractBuilder
{
    private Laptop laptop = new Laptop();
    public override void CreateCPU()
    {
        laptop.AddParts("Apple CPU is very fast!");
    }

    public override void CreateKeyboard()
    {
        laptop.AddParts("The experience of apple Keyboard is wouderful!");
    }

    public override void CreateScreen()
    {
        laptop.AddParts("The experience of apple screen is really amazing!");
    }

    public override Laptop GetLaptop()
    {
        return laptop;
    }
}
View Code

  4. 创建具体创建者角色:LenovoLaptopBuilder

技术分享
public class LenovoLaptopBuilder : AbstractBuilder
{
    private Laptop laptop = new Laptop();
    public override void CreateCPU()
    {
        laptop.AddParts("Lenovo CPU is very good!");
    }

    public override void CreateKeyboard()
    {
        laptop.AddParts("Lenovo Keyboard looks amazing!");
    }

    public override void CreateScreen()
    {
        laptop.AddParts("Lenovo screen is wounderful!");
    }

    public override Laptop GetLaptop()
    {
        return laptop;
    }
}
View Code

  5. 创建指导者角色:Director

技术分享
public class Director
{
    public void Construct(AbstractBuilder builder)
    {
        builder.CreateCPU();
        builder.CreateKeyboard();
        builder.CreateScreen();
        builder.GetLaptop();
    }
}
View Code

  6. 定义客户端调用:

技术分享
class Program
{
    static void Main(string[] args)
    {
        Director director = new Director();

        AppleLaptopBuilder alBuilder = new AppleLaptopBuilder();
        director.Construct(alBuilder);
        Laptop AppLaptop = alBuilder.GetLaptop();
        AppLaptop.ShowPartList();

        LenovoLaptopBuilder llBuilder = new LenovoLaptopBuilder();
        director.Construct(llBuilder);
        Laptop LnLaptop = llBuilder.GetLaptop();
        LnLaptop.ShowPartList();
        Console.ReadLine();
    }
}
View Code

  二、创建者模式设计理念:

  通过抽象创建者角色来限制及规范产品的结构,且针对产品的每个部件都需要相应的建构方法。具体的创建者角色负责创建产品的实例,在这个过程中间,指导者的角色负责创建产品的实例的具体步骤(可以随产品的具体创建步骤而增加或减少)。

  三、角色及关系:

  技术分享

 

设计模式学习总结(五)创建者模式(Builder)

标签:lnl   tla   dir   oar   部件   new   中间   实例   针对   

原文地址:http://www.cnblogs.com/sccd/p/6579413.html

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