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


建造者模式

问题场景

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

总结模式

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

示例代码

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# - 设计模式目录