随笔分类 - Design pattern
自己学习的小结,体会
摘要:定义: 工厂方法:定义了一个创建对象的接口,但由子类决定要实例化的类是哪一个.工厂方法让类把实例化推迟到子类 抽象工厂模式:提供一个接口,用于创建相关或依赖具体对象的家族,而不需要明确指定具体类. 要点: 所有的工厂都是用来封装对象的创建 简单工厂,虽然不是真正的设计模式,但仍不失位一个简单的办法,可以将客户程序从具体类中解耦出来 工厂方法使用继承:把对象的创建委托给子类,子类实现工厂方法来...
阅读全文
摘要:定义: 迭代器模式提供了一种方法顺序访问一个聚合对象中的各个元素,而又不暴露内部的表示 理解: 当访问一个聚合对象(ArrayList,Array)时,不管这些对象是什么时,都需要访问,这样可以考虑迭代器模式. 或者当访问聚合对象有几个不同的方式时,也可以考虑使用迭代器模式 实际上,遍历的行为可以理解为从第一个开始,查看下一个,是否还存在下一个. 设计原则: 单一原则:一个类应该只有一个引起...
阅读全文
摘要:单件模式: 确保一个类只有一个实例,并提供一个全局的访问点. 通常我们可以让一个全局变量使得一个对象被访问,但它不能防止你实例化多个对象,一个最好的办法就是让类自身负责保存它的唯一实例.这个类可以保证没有其他实例可以被创建,并且它可以提供一个访问该实例的方法. 关键词: SingleTon:单独的 结构图: 实现1: public sealed class SingleTon{ static...
阅读全文
摘要:定义: 将抽象部分与它的实现部分分离,使它们能够独立的变化. 关键词: bridge 结构图: 应用场景: 实现系统可能有多角度分类,而且每一种分类都有变化时,那么把这种多角度分离出来,就可以让他们独立变化,减少它们之间的耦合. 例子: 类图: 代码:public class Tel{ protected string name; protected Game game; public Tel...
阅读全文
摘要:定义: 为其他对象提供一个代理,以控制对这个对象的访问. 关键词: proxy 结构图: 应用场景: 远程代理.也就是为一个对象在不同的地址空间提供局部代表,这样可以隐藏一个对象存在于不同地址空间的事实. 虚拟代理.是根据需要创建开销很大的对象.通过它来存放实例化需要很长时间的真实对象. 安全代理.用来控制对象访问时的权限. 智能指引.指当调用真实的对象时,代理处理另外一些事. 例子: 类图:...
阅读全文
摘要:定义: 将对象组合成树形结构以表示"部分--整体"的层次结构.组合结构使得用户对单个对象和组合对象的使用具有一致性. 关键词: Composite 结构图: 应用场景: 表达的对象成"整体-部分"层次结构时. 即表达的对象最后结果承树形时,可以采用组合模式. 例如: 中国移动下属3个品牌:全球通,神州行,动感地带. 同时,中国移动下属有北京移动,天津移动,江苏移动等分公司.下属各分公司又包含3...
阅读全文
摘要:定义: 将一个类的借口转换成客户希望的另外的一个接口,适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作. 关键词: Adapter 结构图: 应用场景: 当想使用一个已经存在的类时,如果它的接口和要求不相同时,考虑使用适配器模式. 即:设计之初,应尽可能的进行重构;在进行项目维护时,多使用适配器模式. 例子: 类图: 代码:public interface IWrite{ v...
阅读全文
摘要:定义: 在一个方法中定义了一个算法的骨架,而将一些步骤延迟到子类中. 模版方法可以使子类在不改变算法结构的情况下,重新定义算法中的某些步骤. 关键词: Template 结构图: 应用场景: 当不变的行为和可变的行为在方法的子类实现中混合在一起的时候,不变的行为就会在子类中重复出现.我们通过模版方法模式把这些行为搬到单一的地方,这样就可以帮助子类摆脱重复的不变的行为. 例子: 类图: 代码:...
阅读全文
摘要:定义: 定义了对象之间一对多的关系,这样一来,当一个对象发生变化时,他的所有依赖者都会收到通知,并自动更新. 关键词: observer : 观察者 subject : 主题 concreteObserver: 具体观察者 结构图: 应用场景: 当一个对象的状态变化时,需要通知其他多个对象进行同步更新时,可以使用此模式(如果有且只有一个对象需要更新,就没有必要了) 当需要动态增加删除...
阅读全文
摘要:策略模式: 策略模式定义了算法家族,分别封装起来,让他们可以相互替换,此模式让算法变化,但不会影响到使用该算法的用户. 结构图: strategy就是个策略类,里面记录了客户需要的方法,此时,客户不一定指客户端,而是指调用这个类的类,我们也可以称之为客户.策略类是个抽象类(抽象策略类),并不实现任何方法,由其具体子类(具体策略类)来实现. Context只需要保持一个对策略类的引用,然...
阅读全文
摘要:工厂方法模式: 定义了一个创建对象的接口,但是这个类不实际生成对象的实例,而是由其子类来进行实例化.工厂方法模式让类的实例化推迟到子类. 结构图: 解决的问题: 在软件系统中,我们会遇到这样一个问题,我们通过某种渠道实现了某个操作后,由于需求变化,或者其他一些原因,导致这个操作需要通过另外的渠道实现,从而导致我们不得不修改这个实现方法.如何封装这样一个易变的地方.工厂方法模式不能解决修改的...
阅读全文
摘要:装饰者模式: 动态的将责任附加到对象上.若要扩展功能,装饰者提供了比继承更有弹性的替代方案. 解决问题: 在软件系统中,我们会需要通过继承来对类进行功能扩展,从而导致子类越来越多. 我们常喝的茶,茶中可以添加牛奶,可以添加糖.要求返回关于这个茶的描述以及价格. 刚开始通过继承来设计时,怎么设计呢? 设计4个类,Tea,MilkTea,SugarTea,SugarMilkTea 目前涉及添...
阅读全文

浙公网安备 33010602011771号