[创建型设计模式:Builder]代码实现
来源:互联网 发布:装饰图片的软件 编辑:程序博客网 时间:2024/04/30 19:40
using System;using System.Collections.Generic;using System.Linq;using System.Text; ////优点:同样的构建过程,不同的表现形式,换房子的窗户,换房子的地板 ///同属于一个大对象的子对象在变化的时候使用这个模式 ////缺点:难以应对分步骤的去构造房子////优点:关闭修改,开放扩展namespace ConsoleApplication2{ class build { } public abstract class Builder { public abstract void BuildDoor(); public abstract void BuildWall(); public abstract void BuildWindows(); public abstract void BuildFloor(); public abstract void BuildHourseCeiling(); public abstract Hourse GetHourse(); } public abstract class Door { } public abstract class Wall { } public abstract class Windows { } public abstract class Floor { } public abstract class HourseCeiling { } public abstract class Hourse { } ////具体实现的类 public class RomainHourse : Hourse { } /// <summary> /// 具体实现的类 /// </summary> public class RomainBuilder : Builder { public override void BuildDoor() { } public override void BuildWall() { } public override void BuildWindows() { } public override void BuildFloor() { } public override void BuildDoor() { } public override void BuildHourseCeiling() { } public override Hourse GetHourse() { return new RomainHourse(); } } public class RomainDoor : Door { } public class RomainWall : Wall { } public class RomainWindows : Windows { } public class RomainFloor : Floor { } public class RomainHourseCeiling : HourseCeiling { } ///类文件 构造房子的类 public class GameManager { public static Hourse CreateHourse(Builder builder) { builder.BuildDoor(); builder.BuildDoor(); builder.BuildFloor(); builder.BuildHourseCeiling(); builder.BuildWall(); builder.BuildWindows(); return builder.GetHourse(); } } ///类文件 /// <summary> /// 客户端程序通过设置XML来调用客户端 /// </summary> public class APP { public static void Main() { ///可以在客户端使用XML文件进行配置 string assemblyName = configurationSettings["BuilderAssembly"]; string builderName = configurationSettings["BuilderClass"]; Assembly assembly = Assembly.Load(assemblyName); Type t = assembly.GetType(builderName); Builder builder = Activator.CreateInstance(t); Hourse a = GameManager.CreateHourse(builder); Hourse a1 = GameManager.CreateHourse(new RomainBuilder); } }}
总结:代码看懂了,但是好像从来没遇到过!!汗
- [创建型设计模式:Builder]代码实现
- 设计模式-创建型:Builder
- 创建型设计模式---构建模式(Builder)
- 创建型设计模式之Builder模式
- [设计模式-创建型]建造者(Builder)
- 设计模式-创建型-builder生成器
- (C++设计模式) ------建造者模式Builder -- 创建型模式
- 设计模式(5)-对象创建型模式-Builder模式
- 设计模式(5)-对象创建型模式-Builder模式
- 设计模式:创建型模式:建造模式(Builder Pattern)
- 设计模式-创建型模式#建造者模式Builder
- Builder 设计模式 代码示例
- 设计模式之生成器(Builder)----对象创建型模式
- 设计模式笔记--创建型模式之二 Builder
- 设计模式-创建型模式之 Builder(生成器)
- 【设计模式基础】创建型模式 - 5 - 生成器(Builder)
- 设计模式--建造者模式Builder(创建型)
- 设计模式(五)创建者模式(Builder)-创建型
- boost相关
- 程序员技术练级实在攻略
- 我的开发(八)车载图像站 数据共享链 image repeater in expressway
- QT皮肤(QSS)编程
- JSP代码的中文处理
- [创建型设计模式:Builder]代码实现
- Python3.0和以前版本的区别
- 从面向过程到面向对象
- Linux下apc安装指南
- 详解 QT 皮肤 QSS编程(1)
- pickle的序列化规则
- 用COMET技术实现WEB实时推送应用(转)
- IE下上传图片时预览图片(1.IE7/IE8测试通过; 2.能根据比例缩放图片 )
- 详解 QT 皮肤 QSS编程(2)