zoukankan      html  css  js  c++  java
  • 设计模式:建造者模式

    建造者模式(Builder):将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。

    namespace Builder
    {
        public class Product
        {
            IList<string> parts = new List<string>();
            public void Add(string part)
            {
                parts.Add(part);
            }
            public void Show()
            {
                Console.WriteLine("
    产品 创建 ---");
                foreach(string part in parts)
                {
                    Console.WriteLine(part);
                }
            }
        }
        public abstract class Builder
        {
            public abstract void BuildPartA();
            public abstract void BuildPartB();
            public abstract Product GetResult();
        }
        public class ConcreteBuilder1 : Builder
        {
            private Product product = new Product();
            public override void BuildPartA()
            {
                product.Add("部件A");
            }
    
            public override void BuildPartB()
            {
                product.Add("部件B");
            }
    
            public override Product GetResult()
            {
                return product;
            }
        }
        public class ConcreteBuilder2 : Builder
        {
            private Product product = new Product();
            public override void BuildPartA()
            {
                product.Add("部件X");
            }
    
            public override void BuildPartB()
            {
                product.Add("部件Y");
            }
    
            public override Product GetResult()
            {
                return product;
            }
        }
        public class Director
        {
            public void Construct(Builder builder)
            {
                builder.BuildPartA();
                builder.BuildPartB();
            }
        }
    }
    View Code

    测试代码:

                Builder.Director director = new Builder.Director();
                Builder.Builder b1 = new Builder.ConcreteBuilder1();
                Builder.Builder b2 = new Builder.ConcreteBuilder2();
                director.Construct(b1);
                Builder.Product p1 = b1.GetResult();
                p1.Show();
                director.Construct(b2);
                Builder.Product p2 = b2.GetResult();
                p2.Show();
    View Code
  • 相关阅读:
    记第一场cf比赛(Codeforces915)
    Uva11468:Substring
    Uva11732:"strcmp()" Anyone?
    Uva1014:Remember the Word
    洛谷P2502:[HAOI2006]旅行
    bzoj3677: [Apio2014]连珠线
    bzoj4906: [BeiJing2017]喷式水战改
    海上孤独的帆
    Treap基本用法总结
    noip2017考前基础复习——数论数学
  • 原文地址:https://www.cnblogs.com/uptothesky/p/5257524.html
Copyright © 2011-2022 走看看