摘要: 定义 当一个对象在内在状态改变时允许改变其行为,这个对象看起来像是改变了其类; 行为型模式 角色 上下文环境(Context) :定义了客户程序需要的接口并维护了一个具体状态角色的实例,将与状态相关的操作委托给当前的Concrete State对象来处理; 抽象状态(State) :定义了一个接口以 阅读全文
posted @ 2016-11-07 10:05 banananana 阅读(306) 评论(0) 推荐(0) 编辑
摘要: 定义 将对象组合成树形结构以表示“部分-整体”的层次结构,组合模式使得用户对单个对象和组合对象的使用具有一致性; 结构型模式 角色 抽象构件角色(Component) :组合中的对象声明接口,在适当的情况下,实现所有类共有接口的默认行为。声明一个接口用于访问和管理,; 部分构件角色(Leaf) :没 阅读全文
posted @ 2016-11-07 10:05 banananana 阅读(255) 评论(0) 推荐(0) 编辑
摘要: 定义 是一个行为设计模式,它允许我们公开一个统一的接口,系统的不同部分可以通过该接口进行通信,而不需要显示的相互作用; 适用场景 如果一个系统的各个组件之间看起来有太多的直接关系,这个时候则需要一个中心控制点,以便各个组件可以通过这个中心控制点进行通信; 该模式促进松散耦合的方式是:确保组件的交互是 阅读全文
posted @ 2016-11-07 10:04 banananana 阅读(342) 评论(0) 推荐(0) 编辑
摘要: 定义 Decorator是一种结构型设计模式,旨在促进代码复用; 装饰者模式可以动态的给一个对象增加其他职责;就扩展功能来说,装饰者模式比生成子类更为灵活。 角色 抽象构件角色(AbstractComponent) :定义对象的接口,可以给这些对象动态增加职责; 抽象装饰角色(AbstractDec 阅读全文
posted @ 2016-11-07 10:04 banananana 阅读(240) 评论(0) 推荐(0) 编辑
摘要: 定义 用原型实例指定创建对象的种类,并通过拷贝这些原型创建新的对象; 创建型模式 浅拷贝:使用一个已知实例对新创建实例的成员变量逐个赋值; 深拷贝:当一个类的拷贝构造方法,不仅要复制对象的所有非引用成员变量值,还要为引用类型的成员变量创建新的实例,并且初始化为形式参数实例值; 角色 抽象原型类(Pr 阅读全文
posted @ 2016-11-07 10:03 banananana 阅读(299) 评论(0) 推荐(0) 编辑
摘要: 定义 是一种对象的行为模式,在责任链模式里,很多对象由每个对其下家的引用而连接起来形成的一条链,请求在这个链上传递,直到链上的某一个对象决定处理此请求,发出这个请求的客户端并不知道链上的哪一个对象最终会处理这个请求; 行为型模式 角色 抽象处理者角色(Handler) :定义处理请求的接口; 抽象处 阅读全文
posted @ 2016-11-07 10:03 banananana 阅读(698) 评论(0) 推荐(0) 编辑
摘要: 定义 采用一个共享来避免大量拥有相同内容对象的开销;运用共享技术有效地支持大量细粒度的对象;(共享的对象必须是不可变的,不然一变则全变) 享元模式分为单纯享元模式和复合享元模式; 结构型模式 角色 抽象享元角色(Flyweight) :此角色是所有的具体享元类的超类,为这些类规定出需要实现的公共接口 阅读全文
posted @ 2016-11-07 10:02 banananana 阅读(205) 评论(0) 推荐(0) 编辑
摘要: 定义 将抽象部分与它的实现部分分离,是它们都可以独立地变化; 结构型模式 角色 抽象化角色(Abstaction) :定义抽象接口,拥有一个Implementor类型对象引用; 重定义抽象化角色(RefinedAbstraction) :扩展Abstraction中的接口定义; 实现化角色(Impl 阅读全文
posted @ 2016-11-07 10:00 banananana 阅读(323) 评论(0) 推荐(0) 编辑
摘要: 定义 将一个类转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作; 创建型模式 角色 目标接口(Flyweight) :客户所期待的接口,目标可以是具体的或抽象的类,也可以是接口; 需要适配的类(Adaptee) :需要适配的类或适配者类; 适配器(Adapter) 阅读全文
posted @ 2016-11-07 10:00 banananana 阅读(164) 评论(0) 推荐(0) 编辑
摘要: 定义 为子系统中的一组接口提供一个统一的入口,外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。 角色 外观角色(Facade) :在客户端可以调用它的方法,在外观角色中可以知道相关的(一个或者多个)子系统的功能和责任;在正常的情况下,它将所有从客户端发来的请求委派到相应的子系统,传递 阅读全文
posted @ 2016-11-07 10:00 banananana 阅读(177) 评论(0) 推荐(0) 编辑
摘要: 解释器模式 详解 定义 给定一种语言,定义它的文法的一种表示,并定义一个解释器,该解释器使用该表示来解释语言中句子; 行为型模式 角色 上下文环境(Context) :一般用来存放文法中各个终结符所对应的具体值; 抽象表达式(Expression) :声明一个所有的具体表达式角色都需要实现的抽象接口 阅读全文
posted @ 2016-11-07 09:59 banananana 阅读(240) 评论(0) 推荐(0) 编辑
摘要: 定义 旨在将方法调用、请求或操作封装到单一对象中,从而根据我们不同的请求对客户进行参数化和传递可供执行的方法调用。此外,这种模式将调用操作的对象与知道如何实现该操作的对象解耦,并在交换出具体类(对象)方面提供更大的整体灵活性; 它为我们提供了一种分离职责的手段,这些职责包括从执行命令的任意地方发布命 阅读全文
posted @ 2016-11-07 09:59 banananana 阅读(338) 评论(0) 推荐(0) 编辑
摘要: 定义 定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类; 创建类模式 角色 抽象工厂角色(AbstractFactory) :模式的核心,提供具体工厂角色必须实现的接口或者必须继承的父类; 具体工厂角色(ConcreteFactory) :含有和具体业务逻辑 阅读全文
posted @ 2016-11-07 09:58 banananana 阅读(256) 评论(0) 推荐(0) 编辑
摘要: 定义 是将一个复杂的对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。 创建类模式 角色 建造者角色(Product) :给出一个抽象接口,以规范产品对象的各个组成部分的建造。这个接口规定要实现复杂对象的哪些部分的创建,并不涉及具体的对象部件的创建; 抽象建造者角色(ConcreteB 阅读全文
posted @ 2016-11-07 09:58 banananana 阅读(180) 评论(0) 推荐(0) 编辑
摘要: 定义 保证一个类仅有一个实例,并且提供一个访问它的全局访问点; (在该实例不存在的情况下,可以通过一个方法创建一个类来实现创建类的新实例;如果实例已经存在,它会简单返回该对象的引用) 创建型模式 适用场景 当类只有一个实例而且客户可以从一个众所周知的访问点访问它时; 该唯一的实例应该是通过子类化可扩 阅读全文
posted @ 2016-11-07 09:57 banananana 阅读(159) 评论(0) 推荐(0) 编辑
摘要: 定义 提供一种方法访问一个容器对象中各个元素,而又不需要暴露该对象的内部细节; 行为型模式 角色 迭代器角色(Iterator) :迭代器角色负责定义访问和遍历元素的接口; 具体迭代器角色(Concrete Iterator) :具体迭代器角色要实现迭代器接口,并要记录遍历中的当前位置; 容器角色( 阅读全文
posted @ 2016-11-07 09:57 banananana 阅读(157) 评论(0) 推荐(0) 编辑
摘要: 定义 代理模式是对象的结构模式,代理模式给某一个对象提供一个代理对象,并由代理对象控制原对象的引用; 结构型模式 角色 抽象对象角色(AbstractObject) :声明了目标对象和代理对象的共同接口,任何可以使用目标对象的地方都可以使用代理对象; 目标对象角色(RealObject) :定义了代 阅读全文
posted @ 2016-11-07 09:56 banananana 阅读(216) 评论(0) 推荐(0) 编辑
摘要: 单一职责原则 Single Responsibility Principle 定义:一个类或者一个接口,最好只负责一项职责。 问题由来 :类T负责两个不同的职责P1和P2。由于职责P1需要发生改变而需要修改T类,就有可能导致原来运行正常的职责P2功能发生故障。 解决方法 :遵循单一职责原则。分别建立 阅读全文
posted @ 2016-11-07 09:56 banananana 阅读(6015) 评论(0) 推荐(0) 编辑
摘要: 定义 在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态; 行为型模式 角色 发起人角色(Originator) :记录当前时刻的内部状态,负责定义哪些属于备份范围的状态,负责创建和恢复备忘录数据; 备忘录角色(Memento) :负责存储发起人对象的内部状态,在需要的时候提 阅读全文
posted @ 2016-11-07 09:55 banananana 阅读(187) 评论(0) 推荐(0) 编辑
摘要: 定义 Strategy定义了一系列的算法,并且将每个算法封装来,而且使它们还可以相互替换;策略模式让算法独立于使用它的客户而独立变化; 角色 环境类(Context) :用一个ConcreteStrategy对象来配置,维护一个对Strategy对象的引用,可定义一个接口来让Strategy访问它的 阅读全文
posted @ 2016-11-07 09:55 banananana 阅读(190) 评论(0) 推荐(0) 编辑