• 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
    */
  • 相关阅读:
    处理sevenzipsharp 检查密码函数的Bug
    C# 开源压缩组件比较
    css 一些技巧
    input 限制输入
    原生JS实现淡入淡出效果(fadeIn/fadeOut/fadeTo)
    js string.format 方法
    Atom插件及使用
    chrome浏览器的跨域设置-包括版本49前后两种设置 ,windows&mac
    原生js监听input值改变事件
    html5 tab横向滚动,无滚动条(transform:translate)
  • 原文地址:https://www.cnblogs.com/shihao/p/2506761.html
Copyright © 2020-2023  润新知