Net设计模式实例之建造者模式(Builder Pattern)(2)
四.案例分析(Example)
1、场景
2、代码
1、产品House
|
public class House
{
public string Roof { get; set; }
public string Walls { get; set; }
}
|
2、指挥者类Contractor
|
public class Contractor
{
public void MakeHouse(ISubContractor contractor)
{
contractor.AddRoof();
contractor.AddWalls();
}
}
|
3、抽象建造者ISubContractor及其具体建造者TownHomeSubContractor,SingleFamilySubContractor
|
//Sub Contractor interface (IBuilder)
public interface ISubContractor
{
void AddRoof();
void AddWalls();
House GetHouse();
}
//Concrete Builder Classes
public class TownHomeSubContractor : ISubContractor
{
private House _house = new House();
public void AddRoof()
{
_house.Roof = "Adding a small roof";
}
public void AddWalls()
{
_house.Walls = "Adding 4 Walls";
}
public House GetHouse()
{
return _house;
}
}
public class SingleFamilySubContractor : ISubContractor
{
private House _house = new House();
public void AddRoof()
{
_house.Roof = "Adding a large roof";
}
public void AddWalls()
{
_house.Walls = "Adding 7 Walls";
}
public House GetHouse()
{
return _house;
}
}
|
4、客户端代码
|
static void <?XML:NAMESPACE PREFIX = ST1 />Main(string[] args)
{
//Jane wants a Town Home
Console.WriteLine("Building a Town Home for Jane..");
Contractor contractor = new Contractor();
ISubContractor subContractorTownHome = new TownHomeSubContractor();
contractor.MakeHouse(subContractorTownHome);
House townHome = subContractorTownHome.GetHouse();
Console.WriteLine(townHome.Roof + "..");
Console.WriteLine(townHome.Walls + "..");
//Joe wants a Single Family Home
Console.WriteLine("\nBuilding a Town Home for Joe..");
ISubContractor subContractorSingleFamily = new SingleFamilySubContractor();
contractor.MakeHouse(subContractorSingleFamily);
House singleFamilyHouse = subContractorSingleFamily.GetHouse();
Console.WriteLine(singleFamilyHouse.Roof + "..");
Console.WriteLine(singleFamilyHouse.Walls + "..");
}
|
3、程序运行结果
五、总结(Summary)
转载于:https://blog.51cto.com/smartlife/262825
Net设计模式实例之建造者模式(Builder Pattern)(2)相关推荐
- 设计模式(创建型)之建造者模式(Builder Pattern)
PS一句:最终还是选择CSDN来整理发表这几年的知识点,该文章平行迁移到CSDN.因为CSDN也支持MarkDown语法了,牛逼啊! [工匠若水 http://blog.csdn.net/yanbob ...
- Python 设计模式之建造者模式 Builder Pattern
#引入建造者模式 肯德基的菜单上有 薯条, 鸡腿,鸡翅,鸡米花,可乐,橙汁,火腿汉堡,至尊虾汉堡,牛肉汉堡 , 鸡肉卷等这些单品,也有很多套餐. 比如 套餐1:鸡翅,至尊虾汉堡,可乐,薯条 套餐2:鸡 ...
- UE4 C++设计模式:建造者模式(Builder Pattern)
目录 描述 套路 使用场景 优缺点 UE4实践 具体复杂产品-门派角色 抽象建造者-角色构造器 具体建造者-纯阳角色构造器 具体建造者-七秀角色构造器 创建指挥者(Director)-角色创建指挥器 ...
- 大厦设计师 -- 建造者模式 (Builder Pattern) 介绍 使用案例场景分析 优缺点 及代码演示
一句话概括: 使用多个简单对象一步一步构建成复杂对象,将复杂对象的构建与表示相分离. 补充介绍: 建造者模式(Builder Pattern)中有一个 Builder 类,这个类会一步一步构造最终的对 ...
- Net设计模式实例之桥接模式( Bridge Pattern)(4)
3.客户端代码<?XML:NAMESPACE PREFIX = O /> static void <?XML:NAMESPACE PREFIX = ST2 />Main(str ...
- Net设计模式实例之备忘录模式(Memento Pattern)
一.备忘录模式简介(Brief Introduction) 备忘录模式(Memento Pattern),在不破坏封装的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态.这样以后就可以就该对 ...
- Net设计模式实例之桥接模式( Bridge Pattern)(2)
四.桥接模式实例分析(Example) 1.场景 业务对象(BusinessObject)与数据对象(DataObject)分离,即业务对象CustormerBase与数据对象DataObject分离 ...
- 设计模式系列之建造者模式构建实体类
设计模式系列之建造者模式(Build Pattern)构建实体类 模式定义 建造者模式属于23种设计模式中的创建型模式,可以理解为创建对象的一种很好的方法. 所谓建造者模式就是**将组件和组件的组件过 ...
- 【设计模式自习室】建造者模式
前言 <设计模式自习室>系列,顾名思义,本系列文章带你温习常见的设计模式.主要内容有: 该设计模式的详细介绍,包括: 引子,意图(大白话解释) 类图,时序图(理论规范) 该模式的代码示例: ...
最新文章
- Node.js获取mac网卡地址
- android 检查网络连接状态实现步骤
- nginx指定配置文件启动
- ECCV 2020 《Propagating Over Phrase Relations for One-Stage Visual Grounding》论文笔记
- mysql ondumplictcate_4.5万字手把手教你实现MySQL TB级数据存储!!
- mysql导入表error 1067_mysql 导入数据error 1067(42000) Invalid default value for 'update'
- ionic2.x 手动搭建开发环境教程分享(nodejs,jdk,ant,androidsdk)
- 利用rsync+inotify搭建实时同步系统
- could not insert:
- 遗传算法是一种进化算法_一种算法的少量更改可以减少种族主义的借贷
- ADS仿真设计AB类射频功率放大器
- Spring学习(全)
- android layoutinflater原理分析,Android 之 LayoutInflater 全面解析
- 关于WPF你应该知道的2000件事
- pytorch to_device遇到数据迁移不成功的问题
- increment java_Java LongAdder increment()用法及代码示例
- 重新启动oracle 服务,在linux重新启动下如何设置oracle服务自动开启
- DebugView 简单使用
- pcd,obj,mtl文件格式解析
- numpy中,矩阵的三种转置transpose、getT、getH的区别