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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了设计模式学习总结创建者模式(Builder)相关的知识,希望对你有一定的参考价值。

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

  一、示例展示:

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

  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)的主要内容,如果未能解决你的问题,请参考以下文章

设计模式之建造者模式(builder)

Builder 设计模式的学习

JavaScript设计模式学习——builder pattern(建造者模式)

(建造者模式)链式编程之 @Builder 和 @Accessors 学习

23种设计模式归纳总结——创建型

23种设计模式归纳总结——创建型