zoukankan      html  css  js  c++  java
  • buildertheory.cs

      using System;
      using System.Collections.Generic;

      // Builder Pattern               judith Bishop November 2007
      // Simple theory code with one director and two builders

      class Director {
        // Builder uses a complex series of steps
        public void Construct(IBuilder builder) {
          builder.BuildPartA();
          builder.BuildPartB();
          builder.BuildPartB();
        }
      }

      interface IBuilder {
        void BuildPartA();
        void BuildPartB();
        Product GetResult();
      }

      class Builder1 : IBuilder {
        private Product product = new Product();
        public  void BuildPartA() {
          product.Add("PartA ");
        }

        public void BuildPartB() {
          product.Add("PartB ");
        }

        public Product GetResult() {
          return product;
        }
      }

      class Builder2 : IBuilder {
        private Product product = new Product();
        public void BuildPartA() {
          product.Add("PartX ");
        }

        public void BuildPartB() {
          product.Add("PartY ");
        }

        public Product GetResult() {
          return product;
        }
      }

      class Product {
        List <string> parts = new List <string> ();
        public void Add(string part) {
          parts.Add(part);
        }

        public void Display() {
          Console.WriteLine("\nProduct Parts -------");
          foreach (string part in parts)
            Console.Write(part);
          Console.WriteLine();
        }
      }
     
      public class Client {
           
        public static void Main() {
          // Create one director and two builders
          Director director = new Director();

          IBuilder b1 = new Builder1();
          IBuilder b2 = new Builder2();

          // Construct two products
          director.Construct(b1);
          Product p1 = b1.GetResult();
          p1.Display();

          director.Construct(b2);
          Product p2 = b2.GetResult();
          p2.Display();
        }
      }
    /* Output
    Product Parts -------
    PartA PartB PartB

    Product Parts -------
    PartX PartY PartY
    */
  • 相关阅读:
    codeforces 55d记忆化搜索
    codeforces 698b 图论
    codeforces 716d 图论加二分
    求多边形面积模板***
    hdu 5869 区间gcd的求法及应用
    codeforces 589a(构造的字符串后,最后要加终止符,,,)
    凸包模板***
    2014ACM-ICPC 西安赛区总结
    Codeforces 475D CGCDSSQ(分治)
    Acdream1217 Cracking' RSA(高斯消元)
  • 原文地址:https://www.cnblogs.com/shihao/p/2506761.html
Copyright © 2011-2022 走看看