码迷,mamicode.com
首页 > Windows程序 > 详细

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

时间:2016-12-25 11:46:31      阅读:233      评论:0      收藏:0      [点我收藏+]

标签:pre   namespace   应用   phone   .text   告诉   return   产品   blog   

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

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#设计模式——简单说(建造者模式)

标签:pre   namespace   应用   phone   .text   告诉   return   产品   blog   

原文地址:http://www.cnblogs.com/annkiny/p/6219094.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!