C# 设计模式学习四 Builder生成器模式
1,Builder模式
① 假设构建一个房屋House类,该房屋有几个部分组成,比如门,窗,墙,而其每个部分都富于变化,如个样式的门,每个样式都有一个或者几个
② 如果使用直观的设计方法,每一个房屋部分的变化,都将导致房屋要重新修正(但是房屋,门,窗,墙都没有变化)
实际上是用来应对,系统的主线相对稳定,枝叶边角的部分,变化频繁。
2,动机(如何封装变化点)
① 在软件系统中,有时候面临着“一个复杂对象”的创建工作,其通常由各个部分的子对象用一定的算法构成,由于需求的变化,各个部分经常面临着剧烈的变化
但是将它们组合在一起的算法(或结构)区相对稳定。
② 问题:如何应对该变化,如何提供一种“封装机制”来隔离出“复杂对象的各个部分”的变化,从而保持系统中的“稳定构建算法”不随着需求改变而改变
3,意图
讲一个复杂对象的构建与其表示相分离,使得同样的构建过程可以创建不同的表示。[《设计模式》GoF]
简单实例如下:
该实例,描述一个房屋的构造,并为该房屋构建一种新的风格
房屋类 House.cs
public abstract class House
{
//复杂构造
public string Wall { get; set; }
public string Door { get; set; }
public string Windows { get; set; }
public string Floor { get; set; }
public string HouseCeiling { get; set; }
}
Builder生成器 Builder.cs
public abstract class House
{
//复杂构造
public string Wall { get; set; }
public string Door { get; set; }
public string Windows { get; set; }
public string Floor { get; set; }
public string HouseCeiling { get; set; }
}
GameManager 类用来使用(构建房屋,是逻辑结构比较稳定的部分) GameManager.cs
public class GameManager
{
//下面记录的是系统的处理过程,也是相对稳定的部分(结构),
//静态方法,一个条用构造器的参数,用该构造器创建房屋的各个部分
public static House CreateHouse(Builder builder)
{
//创建两个门
builder.BuildDoor();
builder.BuildDoor();
相关文档:
最近客户索要产品的二次开发类库文档,由于开发过程中并没有考虑过此类文档,而且项目规范比较,持续时间比较长,经手人比较多,还真是麻烦,如果人工制作文档需要是一个比较大的工程.还好有这个文档生成工具,能够根据项目生成文档,而且格式看起来确实很专业.
Sa ......
这个例子要把bookstore.xml文件增加一条book记录
1 bookstore.xml
<?xml version="1.0" encoding="gb2312"?>
<bookstore>
<book genre="love" ISBN="1234123">
<title>who am i </title>
<author>who</author>
  ......
接上一篇
显示所有结点的内容
1 原xml文件 bookstore.xml
<?xml version="1.0" encoding="gb2312"?>
<bookstore>
<book ISBN="1234123">
<title>who am i </title>
<author>who</author>
<price> ......
1、引用的空间:
using System.DirectoryServices;
using System.ServiceProcess;
2、调用
private void button1_Click(object sender, EventArgs e)
{
String webSiteName = "默认网站";
String pathToRoot = @"C:\Inetpub\wwwroot";
CreateWebSite(webSit ......