c#设计模式——简单说(建造者模式)

Posted Annkiny

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c#设计模式——简单说(建造者模式)相关的知识,希望对你有一定的参考价值。

与其说是建造者模式,还不如通俗的说工厂生产模式。当然只是为了自己的理解和应用模式

1、我们需要的是生成需要的组件  A,B……

2、生产流水线通过产品的QA,通过QA的产品就是一个完成的产品,一个可以展示的产品。

3、产品工程师,他给你生产制造的工艺文档,告诉你怎么去完成这个产品的组装

4、出来的产品了。

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

namespace 建造者模式
{
    
    //生成的产品的车间
    public class Product
    {
        private IList<string> parts = new List<string>();
        //按顺序添加组件
        public void Add(string part)
        {
            parts.Add(part);
        }
        //安装组件
        public void Show()
        {
            Console.WriteLine("产品开始在组装……");
            foreach (var item in parts)
            {
                Console.WriteLine("组件" + item + "已装好");
            }
            Console.WriteLine("产品完成。");
        }
    }
    //产品工程师
    public class Builder
    {
        private Product product = new Product();
        //A模块组装
        public void BuildPartA()
        {
            product.Add("手机主板+配件");
        }
        //B模块组装
        public void BuildPartB()
        {
            product.Add("手机外壳");
        }
        //获得的产品
        public Product GeProduct()
        {
            return product;
        }
        //组装成产品
        public void Construct()
        {
            BuildPartA();
            BuildPartB();
            product.Add("打包成盒");
        }
    }

    class Program
    {
        private static Builder builder;
        static void Main(string[] args)
        {
            builder = new Builder();
            builder.Construct();
            Product product = builder.GeProduct();
            product.Show();

            Console.Read();
        }
    }
}

 

 

看到这张图,是不是发现少了些东西。没错,少了标准流程的东西

 

 

 改进下

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

namespace 建造者模式
{
    
    //生成的产品的车间
    public class Product
    {
        private IList<string> parts = new List<string>();
        //按顺序添加组件
        public void Add(string part)
        {
            parts.Add(part);
        }
        //安装组件
        public void Show()
        {
            Console.WriteLine("产品开始在组装……");
            foreach (var item in parts)
            {
                Console.WriteLine("组件" + item + "已装好");
            }
            Console.WriteLine("产品完成。");
        }
    }
    //产品工程师
    public class Builder : PhoneBuilder
    {
        private Product product = new Product();
        //A模块组装
        public void BuildPartA()
        {
            product.Add("手机主板+配件");
        }
        //B模块组装
        public void BuildPartB()
        {
            product.Add("手机外壳");
        }
        //获得的产品
        public Product GeProduct()
        {
            return product;
        }
        //组装成产品
        public void Construct()
        {
            BuildPartA();
            BuildPartB();
            product.Add("打包成盒");
        }
    }

    //生成手机要的流程,不能偷工减料
    public abstract class PhoneBuilder
    {
        public abstract void BuildPartA();
        public abstract void BuildPartB();
        public abstract void GeProduct();
        public abstract void Construct();
    }

    class Program
    {
        private static Builder builder;
        static void Main(string[] args)
        {
            builder = new Builder();
            builder.Construct();
            Product product = builder.GeProduct();
            product.Show();

            Console.Read();
        }
    }


}

 

以上是关于c#设计模式——简单说(建造者模式)的主要内容,如果未能解决你的问题,请参考以下文章

C#设计模式——建造者模式

设计模式——11.建造者模式

C#设计模式之建造者模式

建造者模式(Builder)

C#设计模式-建造者模式

c#设计模式-创建性模式-2.建造者模式