做調(diào)查賺錢網(wǎng)站有哪些百度推廣怎么使用教程
建造者模式(Builder Pattern),也被稱為生成器模式,是一種對(duì)象構(gòu)建模式,旨在將復(fù)雜對(duì)象的構(gòu)建過(guò)程與表示分離,使得同樣的構(gòu)建過(guò)程可以創(chuàng)建不同的表示。這種模式特別適用于構(gòu)建具有多個(gè)組成部分的復(fù)雜對(duì)象,且這些組成部分的創(chuàng)建和組裝方式相對(duì)獨(dú)立。
public class BuilderPatternTest
{public void Main(){var director = new Director();//指揮者1var director1 = new Director1();//指揮者2var desktopBuilder = new DesktopBuilder();//建造者1var desktopBuilder2 = new DesktopBuilder2();//建造者2//第一臺(tái)電腦,使用指揮者1,使用建造者1var computer1 = director.Construct(desktopBuilder);Console.WriteLine(computer1.ToString());//第二臺(tái)電腦,使用指揮者2,使用建造者2var computer2 = director1.Construct(desktopBuilder);Console.WriteLine(computer2.ToString());//第三臺(tái)電腦,使用指揮者1,使用建造者2var computer3 = director.Construct(desktopBuilder2);Console.WriteLine(computer3.ToString());//第四臺(tái)電腦,使用建造者1,不使用指揮者var computer4 = new DesktopBuilder().SetType("平板電腦").SetRam(256).SetProcessor("i13212").Build();Console.WriteLine(computer4.ToString());}
}// 定義產(chǎn)品類
public class Computer
{public string Type { get; }public bool IsGraphicsCardIncluded { get; }public int Ram { get; }public string Processor { get; }public Computer(string type, bool isGraphicsCardIncluded, int ram, string processor){Type = type;IsGraphicsCardIncluded = isGraphicsCardIncluded;Ram = ram;Processor = processor;}public override string ToString(){return $"Type: {Type}, Graphics Card: {IsGraphicsCardIncluded}, RAM: {Ram}GB, Processor: {Processor}";}
}// 抽象建造者
// 也可以使用接口實(shí)現(xiàn)抽象建造者
// 方法中返回自身,以便鏈?zhǔn)秸{(diào)用
public abstract class Builder
{protected string Type;protected bool IsGraphicsCardIncluded;protected int Ram;protected string Processor;public abstract Computer Build();public virtual Builder SetType(string type){return this;}public virtual Builder SetGraphicsCard(bool isGraphicsCardIncluded){return this;}public virtual Builder SetRam(int ram){return this;}public virtual Builder SetProcessor(string processor){return this;}
}// 具體建造者
public class DesktopBuilder : Builder
{public override Computer Build(){return new Computer(Type, IsGraphicsCardIncluded, Ram, Processor);}public override DesktopBuilder SetType(string type){Type = type;return this;}public override DesktopBuilder SetGraphicsCard(bool isGraphicsCardIncluded){IsGraphicsCardIncluded = isGraphicsCardIncluded;return this;}public override DesktopBuilder SetRam(int ram){Ram = ram;return this;}public override DesktopBuilder SetProcessor(string processor){Processor = processor;return this;}
}public class DesktopBuilder2 : Builder
{public override Computer Build(){return new Computer(Type, IsGraphicsCardIncluded, Ram, Processor);}public override DesktopBuilder2 SetType(string type){Type = type;return this;}public override DesktopBuilder2 SetGraphicsCard(bool isGraphicsCardIncluded){IsGraphicsCardIncluded = isGraphicsCardIncluded;return this;}public override DesktopBuilder2 SetRam(int ram){Ram = ram;return this;}
}// 導(dǎo)演類
public class Director
{public Computer Construct(Builder builder){builder.SetType("臺(tái)式電腦");builder.SetGraphicsCard(true);builder.SetRam(16);builder.SetProcessor("i7");return builder.Build();}
}public class Director1
{public Computer Construct(Builder builder){builder.SetType("筆記本電腦");builder.SetGraphicsCard(true);builder.SetRam(128);builder.SetProcessor("i1000");return builder.Build();}
}