1. 程式人生 > >設計模式學習總結(五)創建者模式(Builder)

設計模式學習總結(五)創建者模式(Builder)

lose etl bfc .get splay hid 定義 string ogr

  創建者模式,主要針對某些產品有類似的生產步驟,且有需要有先後順序的進行各個部件的生成。

  一、示例展示:

  通過學習及總結,以下是我完成的創建者模式的示例:

  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)