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

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

时间:2018-03-19 13:23:28      阅读:286      评论:0      收藏:0      [点我收藏+]

标签:mil   logs   ons   ret   可见   方法   public   建造者模式   ring   

建造者模式

问题场景

我想买一件产品,这件产品需要特殊定制,厂家制造产品的细节我并不想知道,只希望能得到一个成品。

总结模式

将制造产品的内部细节封闭起来,对外不可见,封闭细节应注意权限修饰符的应用,也即用户调用不了制造的方法,由建造者实现细节并返回客户期望的结果,

示例代码

namespace AppCUI
{
    //建造者抽象
    public abstract class AbstractBuilder
    {
        //设为protected,制造细节对外不可见,做到封装
        protected abstract void Part1( );
        protected abstract void Part2( );
        //只暴露获取产品的方法
        public abstract Product GetProduct( );
    }

    //产品
    public class Product
    {
        private List<string> list=new List<string>();
        //设为internal,这样Add方法对当前命名空间外不可见,做到封装
        internal void Add(string part)
        {
            list.Add(part);
        }
        public void Print( )
        {
            Console.WriteLine( "已装配完成" );
        }
    }

    //建造者实现
    //封装制造细节
    public class Builder: AbstractBuilder
    {
        private Product Product { get; set; }

        public Builder( )
        {
            Product = new Product( );
        }
      
        protected override void Part1( )
        {
            Product.Add( "part1" );
        }

        protected override void Part2( )
        {
            Product.Add( "part2" );
        }

        public override Product GetProduct( )
        {
            Part1( );
            Part2( );
            return Product;
        }
    }

    public class Programe
    {
        static void Main( string[] args )
        {
            AbstractBuilder abstractBuilder = new Builder( );
            Product product= abstractBuilder.GetProduct( );
            product.Print( );
        }
    }
}

  

C# - 设计模式目录

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

标签:mil   logs   ons   ret   可见   方法   public   建造者模式   ring   

原文地址:https://www.cnblogs.com/myrocknroll/p/8600922.html

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