建造者模式

  1 using System;
  2 using System.Collections.Generic;
  3 using System.Linq;
  4 using System.Text;
  5 using System.Threading.Tasks;
  6 
  7 namespace DesignPattern.CreationalPattern
  8 {
  9     #region 建造者模式要点
 10 
 11     //定义:将复杂对象的构建过程与其表示分离,使得相同的构建过程能够创建不同的表示
 12     //本质是使组装过程(指挥者类进行封装,从而达到解耦的目的)和创建具体产品解耦,不用关系复杂对象每个组件是如何组装的
 13     //建造者模式主要用于“分步骤来构建一个复杂的对象”,其中“分步骤”是一个固定的组合过程,而复杂对象的各个部分是经常变的
 14     //建造者模式解决的是 “产品部分” 的需要变化。
 15     //建造者隐藏了具体产品的组装过程,要改变一个产品的内部表示,只需实现新的建造者就可满足产品组成组件的需求变化。
 16 
 17     #endregion
 18 
 19     //example of computer:
 20     public abstract class BuilderPattern
 21     {
 22         public abstract void BuildCPU();
 23         public abstract void BuildMainBoard();
 24 
 25         public abstract Computer GetComputer();
 26     }
 27 
 28     public class BuilderApple : BuilderPattern
 29     {
 30         Computer _computer = new Computer();
 31         public override void BuildCPU()
 32         {
 33             //build progress...
 34 
 35             //computer add conponent
 36             _computer.InstallConponent("apple M1");
 37         }
 38 
 39         public override void BuildMainBoard()
 40         {
 41             _computer.InstallConponent("apple main board");
 42         }
 43 
 44         public override Computer GetComputer()
 45         {
 46             return _computer;
 47         }
 48     }
 49 
 50     public class BuilderMicrosoft : BuilderPattern
 51     {
 52         Computer _computer = new Computer();
 53         public override void BuildCPU()
 54         {
 55             //build process...
 56 
 57             //computer add conponent
 58             _computer.InstallConponent("microsoft M1");
 59         }
 60 
 61         public override void BuildMainBoard()
 62         {
 63             _computer.InstallConponent("microsoft main board");
 64         }
 65 
 66         public override Computer GetComputer()
 67         {
 68             return _computer;
 69         }
 70     }
 71 
 72     /***********************************指挥者角色**********************************************/
 73     public class Director 
 74     {
 75         public void Construct(BuilderPattern builder) 
 76         {
 77             //封装构建策略
 78             builder.BuildCPU();
 79             builder.BuildMainBoard();
 80         }
 81     }
 82     /*************************************需创建的复杂对象********************************************/
 83     public class Computer 
 84     {
 85         private List<string> _components = new List<string>();
 86 
 87         public void InstallConponent(string conponent) 
 88         {
 89             _components.Add(conponent);
 90         }
 91 
 92         public void ShowComputerDetail() 
 93         {
 94             foreach (var item in _components)
 95             {
 96                 Console.WriteLine($"computer already install {item}");
 97             }
 98         }
 99     }
100 }

 

posted on 2021-06-25 11:45  HowieGo  阅读(31)  评论(0)    收藏  举报

导航