随笔分类 - 大话设计模式学习笔记
摘要:解释器模式 给定一个语言,定义他的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。 如果一种特定类型的问题发生频率足够高,那么可能就值得将该问题的各个实例表述为一个简单语言中的句子。 这样就可以构建一个解释器,该解释器通过解释这些句子来解决问题。 解释器模式的好处 当有一个
阅读全文
摘要:享元模式 运营共享技术有效地支持大量细粒度的对象。 享元模式的原理 享元模式可以避免大量非常相似类的开销。在程序设计中,有时需要生成大量细粒度的类的实例来表示数据。 如果能发现这些实例除了几个参数外基本都是相通的,有时就能够大幅地减少需要实例化的类的数量。 如果能把那些参数移到类的实例的外面,在方法
阅读全文
摘要:中介者模式 用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变他们之间的交互。 尽管将一个系统分割成许多对象通常可以增加其可复用性,但是对象间相互连接的激增又会降低其可复用性了。 因为大量的连接使得一个对象不可能在没有其他对象的支持下工作,
阅读全文
摘要:职责链模式 使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。 将这个对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。 职责链模式的好处 当客户提交一个请求时,请求时艳链传递直至有一个具体处理者负责处理他。 接收者和发送者都没有地方的明确信息,且链中对象自己也
阅读全文
摘要:命令模式 命令模式将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化,对请求排队或记录请求日志,以及支持可撤销的操作。 对于请求排队或记录请求日志,以及支持可撤销的操作,行为请求者和行为实现者的紧耦合是不合适的。 命令模式的优点 命令模式能较容易地设计一个命令模式。在需要的情况下,可以
阅读全文
摘要:桥接模式 桥接模式将抽象部分和他的实现部分分离,是它们都可以独立地变化。 抽象与他的实现分离并不是说让抽象类与其派生类分离,因为这没有任何意义,实现指的是抽象类和他的派生类用来实现自己对象。 实现系统可能有多角度分裂,每一种分类都有可能变化,那么就把这种多角度分离出来让他们独立变化,减它们之间的耦合
阅读全文
摘要:单例模式 单例模式保证一个类仅有一个实例,并提供一个访问它的全局访问点。 通常我们可以让一个全局变量使得一个对象被访问,但他不能防止你实例化多个对象。 一个最好的办法就是,让类自身负责保存他的唯一实例。 这个类可以保证没有其他实例可以被窗创建,并且他可以提供一个访问该实例的方法。 单例模式结构演示
阅读全文
摘要:组合模式 组合模式,将对象组合成树形结构以表示部分-整体的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。 使用组合模式的时机 需求在是体现部分与整体层次的结构时,以及你希望用户可以忽略组合对象与单个的不同,统一地使用组合对象中的所有对象时,就应该考虑用组合模式了。 组合模式的好处
阅读全文
摘要:备忘录模式 在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样以后就可以将该对象恢复到原先保存的状态。 备忘录模式的特点 备忘录模式比较适用于比较复杂但需要维护或记录属性历史的类,或者需要保存的属性只是众多属性中的一小部分时,发起人可以根据保存的备忘录信息还原到前一状态
阅读全文
摘要:适配器模式 适配器模式将一个类的接口转换成客户希望的另外一个接口。适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。 适配器模式的作用 系统的数据和行为都正确,但接口不符时,应该考虑使用适配器,目的是使控制范围之外的一个原有对象与某个接口匹配。适配器模式主要应用与希望服用一些现存的
阅读全文
摘要:状态模式 状态模式,当一个对象的内在状态改变时,允许改变其行为,这个对象看起来像是改变了其类。 面向对象设计其实就是希望做到代码的责任分解。状态模式主要解决的是当控制一个对象状态转换的条件表达式过于复杂时,把状态的判断逻辑转移到表示不同状态的一系列类当中,可以把复杂的判断逻辑简化。 状态模式的好处
阅读全文
摘要:抽象工厂模式 抽象工厂模式提供一个创建一系列相关或互相依赖的接口,而无需再指定他们具体的类。 最大的好处是易于交换产品系列,由于具体工厂类在一个应用中只需要在初始化的时候出现一次,这使得改变一个应用的具体工厂变得非常容易,他只需要改变具体工厂即可使用不同的产品配置。 他让具体的创建实例过程与客户端分
阅读全文
摘要:观察者模式 观察者模式又称发布-订阅模式,其定义了一种多对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态发生变化时,会通知所有观察者对象,使他们能自动更新自己。 观察者模式的动机 将一个系统分割成一系列相互协作的类有一个很不好的副作用就是需要维护相关对象间的一致性。 我们不
阅读全文
摘要:建造者模式 建造者模式又称生成器模式,将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。 建造者模式主要用于创建一些复杂的对象,这些对象内部构构建间的构造顺序通常是稳定的,但对象内部的构建通常面临着复杂的变化。 建造者模式的好处就是使得建造代码与表示代码分离,由于建造者隐藏了
阅读全文
摘要:外观模式 外观模式为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。 外观系统完美的体现了依赖倒转原则和迪米特法则的思想,所以是非常常用的模式之一。 外观模式的使用时机 首先在设计初期阶段,应该要有意识地将不同的两个层分离,层与层之间建立外观Fac
阅读全文
摘要:模板方法模式 定义一个操作中的算法的骨架,将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重新定义该算法的某些特定步骤。 模板方法模式是通过把不变的行为搬到超类,去除子类中的重复方法来体现它的优势。模板方法就是提供了一个很好的代码复用平台。 当不变的和可变的行为在方法的子类实现中
阅读全文
摘要:原型模式 用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。 原型模式其实就是从一个对象再创建另外一个可定制的对象,而且不需要知道任何创建的细节。 原型模式结构演示 原型抽象类:Prototype 具体原型类:ConcretePrototype1 测试类:Program 对于.NET而
阅读全文
摘要:工厂方法模式 工厂方法模式定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类。 简单工厂模式的优缺点 简单工厂模式最大的优点在于工厂类中包含了必要的逻辑判断,根据客户端的选择条件动态实例化相关的类,对于客户端来说,去除了与具体产品的依赖。 但是如果要加一个功能
阅读全文
摘要:代理模式 代理模式为其他对象提供一种代理以控制对这个对象访问。 代理模式结构演示 实体抽象类:Subject 定义了RealSubject和Proxy的共用接口,这样就能在任何使用RealSubject的地方使用Proxy 真实实体类:RealSubject 定义Proxy所代表的真实实体。 代理类
阅读全文
摘要:装饰模式 动态地给一个对象添加一些额外的职责,就增加功能来说,装饰模式比生成子类更为灵活。 装饰模式结构演示 组件类:Component Component是定义一个对象接口,可以给这些对象动态地添加职责。 具体组件类:ConcreteComponent ConcreteComponent是定义了一
阅读全文

浙公网安备 33010602011771号