using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DesignPattern
{
//建造者模式
internal class BuilderPattern
{
private void main()
{
Builder builder = new ConcreteBuilder1();
Director director = new Director();
director.logEvent += Log;
director.SetBuilder(builder);
Product product = director.Construct();
}
private void Log(string msg) {
}
}
public delegate void DelegateLogger(string msg);
class Director
{
Builder builder;
//Director(Builder builder)
//{
// this.builder = builder;
//}
public void SetBuilder(Builder builder)
{
this.builder = builder;
}
public event DelegateLogger logEvent;
public Product Construct()
{
builder.BuildPartA();
builder.BuildPartB();
builder.BuildPartC();
string aaa = "232";
logEvent(aaa);
return builder.GetResult();
}
}
/// <summary>
/// 产品
/// </summary>
class Product
{
public string PartA { get; set; }
public string PartB { get; set; }
public string PartC { get; set; }
}
/// <summary>
/// 抽象建造者
/// </summary>
abstract class Builder
{
protected Product product = new Product();
public abstract void BuildPartA();
public abstract void BuildPartB();
public abstract void BuildPartC();
public Product GetResult()
{
return product;
}
}
/// <summary>
/// 具体建造者
/// </summary>
class ConcreteBuilder1 : Builder
{
public override void BuildPartA()
{
product.PartA = "A1";
}
public override void BuildPartB()
{
product.PartB = "B1";
}
public override void BuildPartC()
{
product.PartC = "C1";
}
}
}
《C#设计模式》==>建造者模式
最新推荐文章于 2024-10-03 07:17:26 发布