23种设计模式

发布时间 2023-03-22 21:14:28作者: *Hunter

一、创建型

1,AbstractFactory(抽象工厂,对象创建型)

2,Builder(建造者,对象创建型)

 

 

一、创建型

1,AbstractFactory(抽象工厂,对象创建型)

 

2,Builder(建造者,对象创建型)

 意图:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示

 使用场景:当需要创建复杂对象并且需要控制对象的构造过程时,使用 Builder 模式可以提供一种清晰、简洁的解决方案

 结构:

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace _9_建造者模式
{
    class Program
    {
        static void Main(string[] args)
        {
            Builder bui = new ConcreteBuilder();
            Director dir = new Director();
            dir.Construct(bui);
            bui.GetResult().GetProduct();

            Console.ReadLine();
        }
    }

    //具体产品
    public class Product
    {
        private List<string> strList = new List<string>();
        public void Add(string p)
        {
            strList.Add(p);
        }

        public void GetProduct()
        {
            foreach (var list in strList)
            {
                Console.WriteLine(list);
            }
        }
    }

    //抽象建造者
    public abstract class Builder
    {
        public abstract void BuilderPartA();
        public abstract void BuilderPartB();
        public abstract Product GetResult();
    }

    //具体建造者
    public class ConcreteBuilder : Builder
    {
        private Product pro = new Product();

        public override void BuilderPartA()
        {
            pro.Add("部件1");
        }

        public override void BuilderPartB()
        {
            pro.Add("部件2");
        }

        public override Product GetResult()
        {
            return pro;
        }
    }

    //指挥者
    public class Director
    {
        public void Construct(Builder bui)
        {
            bui.BuilderPartA();
            bui.BuilderPartB();
        }
    }


}
建造者结构代码

 使用案例:在asp.net core框架中的应用:

using Microsoft.AspNetCore;
using Microsoft.AspNetCore.Hosting;

public class Program
{
    public static void Main(string[] args)
    {
        CreateWebHostBuilder(args).Build().Run();
    }

    public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
        WebHost.CreateDefaultBuilder(args)
            .UseStartup<Startup>();
}
示例代码