zoukankan      html  css  js  c++  java
  • 建造者模式(Builder)

      1 /*
      2  * 建造者模式是一种创建型模式,它主要是应对项目中一些复杂对象的创建工作。
      3  * 所谓“复杂对象”,是指此对象中还含有其它的子对象。
      4  * 我们现在定义一个场景:汽车生产必须包含车轮(Wheel)、油箱(OilBox)和车身(Body),
      5  * 应用建造者模式,用C#控制台应用程序实现该设计,构建BMW品牌和BenZ品牌汽车生产。
      6  */
      7 using System;
      8 using System.Collections.Generic;
      9 using System.Linq;
     10 using System.Text;
     11 
     12 namespace Builder
     13 {
     14     class Car
     15     {
     16         IList<string> parts = new List<string>();
     17         public void Add(string part)
     18         {
     19             parts.Add(part);
     20         }
     21         public void Show()
     22         {
     23             Console.WriteLine("\n创建产品\nBegin");
     24             foreach (string part in parts)
     25             {
     26                 Console.WriteLine("创建:"+part);
     27             }
     28             Console.WriteLine("End");
     29         }
     30     }
     31     abstract class Builder
     32     {
     33         public abstract void BuildWheel();
     34         public abstract void BuildOilBox();
     35         public abstract void BuildBody();
     36         public abstract Car GetProduct();
     37     }
     38     class BMWBuilder : Builder
     39     {
     40         private Car car = new Car();
     41         public override void BuildWheel()
     42         {
     43             car.Add("BMW-Wheel");
     44         }
     45         public override void BuildOilBox()
     46         {
     47             car.Add("BMW-OilBox");
     48         }
     49         public override void BuildBody()
     50         {
     51             car.Add("BMW-Body");
     52         }
     53         public override Car GetProduct()
     54         {
     55             return car;
     56         }
     57 
     58     }
     59     class BenZBuilder : Builder
     60     {
     61         private Car car = new Car();
     62         public override void BuildWheel()
     63         {
     64             car.Add("BenZ-Wheel");
     65         }
     66         public override void BuildOilBox()
     67         {
     68             car.Add("BenZ-OilBox");
     69         }
     70         public override void BuildBody()
     71         {
     72             car.Add("BenZ-Body");
     73         }
     74         public override Car GetProduct()
     75         {
     76             return car;
     77         }
     78 
     79     }
     80     class Director
     81     {
     82         public void Construct(Builder bd)
     83         {
     84             bd.BuildWheel();
     85             bd.BuildOilBox();
     86             bd.BuildBody();
     87         }
     88     }
     89     class Program
     90     {
     91         static void Main(string[] args)
     92         {
     93             Director dt = new Director();
     94             Builder bmw = new BMWBuilder();
     95             Builder benz = new BenZBuilder();
     96 
     97             dt.Construct(bmw);
     98             Car car1 = bmw.GetProduct();
     99             car1.Show();
    100 
    101             dt.Construct(benz);
    102             Car car2 = benz.GetProduct();
    103             car2.Show();
    104         }
    105     }
    106 }
    字节跳动内推

    找我内推: 字节跳动各种岗位
    作者: ZH奶酪(张贺)
    邮箱: cheesezh@qq.com
    出处: http://www.cnblogs.com/CheeseZH/
    * 本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

  • 相关阅读:
    Git初级实践教程(图文)
    如何合并多个PPT
    优秀小工具集锦
    VS2015链接错误一则
    VisualStudio配色方案
    AI贪吃蛇(二)
    springMVC
    SSH三大框架的搭建整合(struts2+spring+hibernate)(转)
    生成图片验证码
    Spring JdbcTemplate详解(转)
  • 原文地址:https://www.cnblogs.com/CheeseZH/p/2500717.html
Copyright © 2011-2022 走看看