zoukankan      html  css  js  c++  java
  • 设计模式之建造者模式代码示例

    using System;
    using System.Collections;
    using System.Collections.Generic;
    
    namespace BuilderFunc{
    
        public class Product{
    
            List<string> arrList = new List<string>();
            // First in First Out (FIFO) 
            Queue  Q = new Queue(); 
            
            // Last in First out (LIFO) 
            Stack S = new Stack();
            public void Add(string param)
            {
                arrList.Add(param);
            }
    
            public void AddEvent(EventArgs e)
            {
                Q.Enqueue(e);
            }
            
            public void Show() { 
                Console.WriteLine("\nProduct Param -------"); 
                foreach (string part in arrList) 
                    Console.WriteLine(part); 
                    
                foreach (EventArgs e in Q) 
                    Console.WriteLine(e); 
            }
        }
    
        public abstract class AbstractBuilder{
            public abstract void BuilderProductA();
            public abstract void BuilderProductB();
            public abstract Product GetResult();
        }
    
        public class ConcreteBuilder1 : AbstractBuilder{
    
            private Product product = new Product();
    
            public override void BuilderProductA(){
                product.Add(this.ToString() + " : BuilderProductA");
            }
            public override void BuilderProductB(){
                product.Add(this.ToString() + " : BuilderProductB");
            }
            public override Product GetResult(){
                return product;
            }
        }
    
        public class Director{
            public static void CreateBuilder(AbstractBuilder abstractBuilder)
            {
                abstractBuilder.BuilderProductA();
                abstractBuilder.BuilderProductB();
            }
        }
    
        public class EntryPoint{
            public static void Main(string[] args){
                AbstractBuilder absBuilder = new ConcreteBuilder1();
                Director.CreateBuilder(absBuilder);
                Product p1 = absBuilder.GetResult();
                p1.Show();
                Console.Read();
            }
        }
    }
  • 相关阅读:
    Python 模块 itertools
    Python 字符串的encode与decode
    python 模块 hashlib(提供多个不同的加密算法)
    暴力尝试安卓gesture.key
    hdu 1300 Pearls(DP)
    hdu 1232 畅通工程(并查集)
    hdu 1856 More is better(并查集)
    hdu 1198 Farm Irrigation(并查集)
    hdu 3635 Dragon Balls(并查集)
    hdu 3038 How Many Answers Are Wrong(并查集)
  • 原文地址:https://www.cnblogs.com/zhangchenliang/p/2651710.html
Copyright © 2011-2022 走看看