随笔分类 -  设计模式

摘要:一、享元模式是为了解决一个系统创建了过多类实例而带来的系统开销的解决方案二、内部状态,即在一个对象中不会随外部环境不同而发生变化的状态,是需要被共享的状态三、外部状态,与内部状态相反四、以下是一个公司饮水机的例子。使用享元模式,保存了各个部门的饮水机实例,不需要在每个员工饮水的时候去实例化。 View Code /// <summary> /// 饮水机超类 /// </summary> public abstract class WaterMachine { /// <summary> /// 剩余的水量 /// </summary> publ 阅读全文
posted @ 2011-05-18 11:56 CNF 阅读(253) 评论(0) 推荐(0)
摘要:一、在调用一个已存在的,不易更改的对象时,如果需要将该对象的接口与自己的项目所需要的接口一致时,需要使用适配器模式。View Code /// <summary> /// 输入对象通用接口 /// </summary> public interface IWriter { void Write(string content); }View Code /// <summary> /// 实现了通用接口的普通输入对象 /// </summary> public class Writer:IWriter { public void Write(stri 阅读全文
posted @ 2011-05-12 11:06 CNF 阅读(192) 评论(0) 推荐(0)
摘要:一、观察者对象在触发某个事件的时候会通知在观察者对象中注册的其他对象二、使用抽象接口实现对象的松耦合,即观察者可以注册支持某个接口的所有对象,而被注册的对象也只依赖于支持某个接口观察者对象。例如:邮局相对于一个观察者,每个邮局都有一个接口,发送快递。 每个客户相对于不同的接收者,邮局在收到快递后,会通知收信的客户。View Code /// <summary> /// 观察者对象的抽象实现 /// </summary> public abstract class Inform { protected List<IViewer> Viewers = new L 阅读全文
posted @ 2011-05-11 11:49 CNF 阅读(221) 评论(0) 推荐(0)
摘要:一、建造者模式适用于构建一些内部工作流程一致,实现方式不同的对象。比如说我们每个人每天基本上是用餐四次(早、中、晚和宵夜,但也有不同的)。这里我们不考虑特殊的情况,来说明建造者模式的构建。View Code /// <summary> /// 定义了每天必须完成项目的抽象接口 /// </summary> public interface IBuild { void BuildMorning(); void BuildNoon(); void BuildEvening(); void BuildNight(); }View Code /// <summary> 阅读全文
posted @ 2011-04-26 16:30 CNF 阅读(251) 评论(0) 推荐(0)
摘要:步骤:一、在父类中创建模板方法,以完成一致的操作二、在子类中实现其个别不同的操作代码: /// <summary> /// 数据验证父类 /// </summary> public abstract class Validation { public void Valid(string value) { Console.WriteLine("\r\n验证结果:{0}\r\n", this.IsVald(value)); } protected virtual bool IsVald(string value) { return true; } } / 阅读全文
posted @ 2011-04-23 15:34 CNF 阅读(176) 评论(0) 推荐(0)