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
    */
  • 相关阅读:
    你的课程
    asp.net的ajax以及json
    asp.net自带的异步刷新控件使用
    基于.net mvc的校友录(源程序)
    基于.net mvc的校友录(七、文件上传以及多对多关系表的LINQ查询实现)
    基于.net mvc的校友录(六、codefirst的使用以及班级模块的关键部分实现)
    逻辑回归实例
    层次聚类
    k均值聚类
    数据处理与转换
  • 原文地址:https://www.cnblogs.com/shihao/p/2506761.html
Copyright © 2011-2022 走看看