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();
相关文档:
这个例子要把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、C/C++程序员请注意,不能在case语句不为空时“向下执行”。
2、值类型和引用类型之间的区别:C#的基本类型(int,char等)都是值类型,是在栈中创建的。而对象是引用类型,创建于堆中,需要使用关键字new。
3、在C#中通过实例访问静态方法或成员变量是不合法的,会生成编译器错误。但是我们可以通过声明他 ......
C-#入门经典(第三版).pdf
using System;
using System.Data;
using System.Data.SqlClient;
namespace My_Student
{
static class Program
{
static void Main()
&n ......
在很多应用中需要做windows服务来操作数据库等操作,比如
(1)一些非常慢的数据库操作,不想一次性去做,想慢慢的通过服务定时去做,比如定时为数据库备份等
(2)在.net Remoting中利用windows服务来做Host
利用vs.net我们可以在几分钟之内建立其windows服务,非常简单
下面说一下步骤
1. 新建一个项目
2. 从一个可 ......