摘要: 在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。 备忘录模式比较适用于功能比较复杂的,但需要维护或记录属性历史的类,或者需要保存的属性只是众多属性中的一小部分时。 //定义一个发起人类 class Originator { //状 阅读全文
posted @ 2017-04-18 16:27 jechsky 阅读(92) 评论(0) 推荐(0) 编辑
摘要: 将一个类的接口转换成客户希望的另外一个接口。 系统的数据和行为都正确,但接口不符时,我们应该考虑用适配器。 //定义一个player抽象类 abstract class Player { protected string name; public Player(string name) { this 阅读全文
posted @ 2017-04-18 15:09 jechsky 阅读(75) 评论(0) 推荐(0) 编辑
摘要: 当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类。 当一个对象的行为取决于它的状态,并且它必须在运行时刻根据状态改变它的行为时,就可以考虑使用状态模式。 //定义一个抽象状态类 abstract class State { public abstract void Handle 阅读全文
posted @ 2017-04-18 13:24 jechsky 阅读(90) 评论(0) 推荐(0) 编辑
摘要: 将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。 创建复杂对象的算法应该独立于该对象的组成部分以及它们的装配方式时适用 //定义一个产品类 class Product { //组成部分的集合 IList<string> parts = new List<string>(); 阅读全文
posted @ 2017-04-18 13:00 jechsky 阅读(74) 评论(0) 推荐(0) 编辑
摘要: 不用通过生成子类的方式给对象动态的添加额外的职责。 为已有功能动态地添加更多功能的一种方法。装饰了原有类的核心职责或主要行为。 这种模式可以有效地把类的核心职责和装饰功能区分开。 比如我要给一个Person类添加额外的职责 //定义一个person类 public class Person { pu 阅读全文
posted @ 2017-04-18 09:53 jechsky 阅读(96) 评论(0) 推荐(0) 编辑
摘要: 这两个我觉得挺类似的,然后仔细了解下才发现具体区别。 工厂方法:定义一个用于创建对象的接口,让子类决定实例化那一个类。工厂方法使得一个类的实例化延迟到其子类。 抽象工厂:提供一个创建一系列相关或相互依赖的对象的接口,而无需指定它们具体的类。 区别: 工厂方法返回单个对象的接口,而抽象工厂返回的是一系 阅读全文
posted @ 2017-04-18 08:50 jechsky 阅读(155) 评论(0) 推荐(0) 编辑