zoukankan      html  css  js  c++  java
  • 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# - 设计模式目录

  • 相关阅读:
    数据库路由中间件MyCat
    数据库路由中间件MyCat
    数据库路由中间件MyCat
    数据库路由中间件MyCat
    数据库路由中间件MyCat
    数据库路由中间件MyCat
    数据库路由中间件MyCat
    数据库路由中间件MyCat
    SQL Server 调用dll
    windows7 Sql server 2012 尝试读取或写入受保护的内存。这通常指示其他内存已损坏的修复
  • 原文地址:https://www.cnblogs.com/myrocknroll/p/8600922.html
Copyright © 2011-2022 走看看