易截截图软件、单文件、免安装、纯绿色、仅160KB

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();


相关文档:

C#修改XML的简单例子

接上一篇《C#写XML的简单例子》
这个例子要修改XML文件中结点的属性和和元素的文本
1 原xml文件 bookstore.xml
<?xml version="1.0" encoding="gb2312"?>
<bookstore>
  <book genre="love" ISBN="1234123">
    <title>who am i </title>
    &l ......

C#多线程与UI响应

软件界面的响应特性是判断一款软件的非常重要的方面。一般来说,不管你软件功能做得有多么奇妙,如果软件有一点点死机的感觉都会让用户感到很讨厌,甚至怀疑你软件里是否藏有更大的问题。
要提高界面的响应特性,最好的办法莫过于使用多线程,并把呈现界面的线程独立出来。以前只有使用C++才能实现的多线程功能,现在在.Ne ......

GDI+入门(C#高速处理版本)

首先感谢CSDN的朋友laviewpbt为我给我的建议。
laviewpbt提出使用getpixel处理速度太慢,上不了档次。
这里我再给大家写两种处理速度更快的图形处理方式。
下面是个内存操作灰度的程序:
bmp = new Bitmap(Application.StartupPath + "\\1.jpg");
            ......

C# copydata消息处理

http://blog.csdn.net/carl2380/archive/2009/11/18/4826973.aspx
简介:
本文着重讲述了如果用WM_COPYDATA消息来实现两个进程之间传递数据.
进程之间通讯的几种方法:
在Windows程序中,各个进程之间常常需要交换数据,进行数据通讯。常用的方法有
  使用内存映射文件
  通过共享内存DLL共享内存
  使 ......

用C#发送邮件的几种方法

1 JavaScript发送邮件   
<script language="javascript">
        function SendMail() {
            document.location = "mailto:seat@wicresoft.com;?subject=Feedback";
   &n ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号