设计模式-建造者模式

打印 上一主题 下一主题

主题 527|帖子 527|积分 1581

概述

建造者模式也是一种创建式的模式,其中有几个主要的组成部分,建造产品,建造者接口,建造者,指挥者这四部分组合而成,逻辑是,先有须要建造的产品,然后指挥者指挥须要建造什么,对产品进行规定,然后建造者那到须要建造的对象再去建造。逻辑实现如下

需求:现有一个修建队,须要再天津修建一个古典风格的建造,材料是混泥土,请设计实现。

建造者模式

  1. internal class Program
  2. {
  3.     private static void Main(string[] args)
  4.     {
  5.         IBuider buider = new HouseBuilder();//建造者
  6.         Director director = new Director(buider);//指挥者
  7.         director.GetHouseBuilder();//指挥者指挥需要建造什么
  8.         House house = buider.GetHouse();
  9.         Console.WriteLine(house);
  10.     }
  11. }
  12. public class House//房屋
  13. {
  14.     public string Material { get; set; }//材料
  15.     public string DesignDrawing { get; set; }//设计图
  16.     public string Location { get; set; }//位置
  17.     public override string ToString()
  18.     {
  19.         return $"修建房屋,材料是:{Material} 设计图是:{DesignDrawing} 位置是:{Location}";
  20.     }
  21. }
  22. public interface IBuider//建造者接口
  23. {
  24.     void SetMaterial(string _Material);
  25.     void SetDesignDrawing(string _DesignDrawing);
  26.     void SetLocation(string _Location);
  27.     House GetHouse();
  28. }
  29. public class HouseBuilder : IBuider//建造者
  30. {
  31.     private House _House = new House();
  32.     public House GetHouse()
  33.     {
  34.         return _House;
  35.     }
  36.     public void SetDesignDrawing(string _DesignDrawing)
  37.     {
  38.         _House.DesignDrawing = _DesignDrawing;
  39.     }
  40.     public void SetLocation(string _Location)
  41.     {
  42.         _House.Location = _Location;
  43.     }
  44.     public void SetMaterial(string _Material)
  45.     {
  46.         _House.Material = _Material;
  47.     }
  48. }
  49. public class Director//指挥者
  50. {
  51.     private IBuider _HouseBuilder;
  52.     public Director(IBuider houseBuilder)
  53.     {
  54.         _HouseBuilder = houseBuilder;
  55.     }
  56.     public void GetHouseBuilder()
  57.     {
  58.         _HouseBuilder.SetMaterial("混泥土");
  59.         _HouseBuilder.SetLocation("天津");
  60.         _HouseBuilder.SetDesignDrawing("古典风格");
  61.     }
  62. }
复制代码
输出结果(情况C#控制台程序):
修建房屋,材料是:混泥土 设计图是:古典风格 位置是:天津

建造者模式是将指挥者和建造者分离开来,如果有新的工程,只须要指挥者更改需求,就可以完成,不须要动建造者的代码,进步了代码的可维护性和复用性

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

老婆出轨

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表