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的简单例子》
这个例子要修改XML文件中结点的属性和和元素的文本
1 原xml文件 bookstore.xml
<?xml version="1.0" encoding="gb2312"?>
<bookstore>
<book genre="love" ISBN="1234123">
<title>who am i </title>
&l ......
软件界面的响应特性是判断一款软件的非常重要的方面。一般来说,不管你软件功能做得有多么奇妙,如果软件有一点点死机的感觉都会让用户感到很讨厌,甚至怀疑你软件里是否藏有更大的问题。
要提高界面的响应特性,最好的办法莫过于使用多线程,并把呈现界面的线程独立出来。以前只有使用C++才能实现的多线程功能,现在在.Ne ......
首先感谢CSDN的朋友laviewpbt为我给我的建议。
laviewpbt提出使用getpixel处理速度太慢,上不了档次。
这里我再给大家写两种处理速度更快的图形处理方式。
下面是个内存操作灰度的程序:
bmp = new Bitmap(Application.StartupPath + "\\1.jpg");
  ......
http://blog.csdn.net/carl2380/archive/2009/11/18/4826973.aspx
简介:
本文着重讲述了如果用WM_COPYDATA消息来实现两个进程之间传递数据.
进程之间通讯的几种方法:
在Windows程序中,各个进程之间常常需要交换数据,进行数据通讯。常用的方法有
使用内存映射文件
通过共享内存DLL共享内存
使 ......
1 JavaScript发送邮件
<script language="javascript">
function SendMail() {
document.location = "mailto:seat@wicresoft.com;?subject=Feedback";
&n ......