定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。策模式让算法独立于使用它的客户而独立变化。 角色: Context:环境角色,聚合抽象策略角色 Stra...
定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。策模式让算法独立于使用它的客户而独立变化。 角色: Context:环境角色,聚合抽象策略角色 Stra...
把请求从链中的一个对象传到下一个对象,直到请求被响应为止。通过这种方式去除对象之间的耦合。
在不破坏封装性的前提下,获取并保存一个对象的内部状态,以便以后恢复它。
定义一个中介对象来简化原有对象之间的交互关系,降低系统中对象间的耦合度,使原有对象之间不必相互了解。 角色: IMediator:抽象中介者,定义了同事对象到中介者对象的接口...
多个对象间存在一对多关系,当一个对象发生改变时,把这种改变通知给其他多个对象,从而影响其他对象的行为。
提供一种方法来顺序访问聚合对象中的一系列数据,而不暴露聚合对象的内部表示。
在不改变集合元素的前提下,为一个集合中的每个元素提供多种访问方式,即每个元素有多个访问者对象访问。 角色: Visitor:抽象的访问者 ConcreteVistor:具体访...
将一个请求封装为一个对象,使发出请求的责任和执行请求的责任分割开。四个角色 Invoker:调用者角色 Command:命令角色,一般为接口或抽象类 Receiver:接受者...
定义一个操作中的算法骨架,将算法的一些步骤延迟到子类中,使得子类在可以不改变该算法结构的情况下重定义该算法的某些特定步骤。
为某对象提供一种代理以控制对该对象的访问。即客户端通过代理间接地访问该对象,从而限制、增强或修改该对象的一些特性。 静态代理:需要定义接口或者父类,被代理对象与代理对象一起实...
提供支持大量细粒度对象共享的有效方法。内部状态:指对象共享出来的信息,存储在享元对象内部且不会随环境的改变而改变。外部状态:指对象得以依赖的一个标记,是随环境的改变而改变的、...
定义一个高层接口,为子系统中的一组接口提供一个一致的外观,从而简化了该子系统的使用。
将对象组合成树型结构以表示“整体-部分”的层次结构,使得用户对单个对象和组合对象的使用具有一致性。
动态地给一个对象添加一些额外的职责,即增加其额外的功能。
将类的抽象部分和它的实现部分分离开来,使它们可以独立地变化。它是用聚合关系代替继承关系来实现的,从而降低了抽象和实现这两个可变维度的耦合度。
将一个类的接口转换成用户希望得到的另一种接口。它使原本不相容的接口得以协同工作。1、类适配器 2、对象适配器 3、接口适配器模式(缺省适配器模式)使用情形:当不需要全部实现接...
将一个复杂类的表示与其构造相分离,使得相同的构建过程能够得出不同的表示。四个核心角色:产品、抽象建造者、具体建造者,指挥者
用一个已经创建的实例作为原型,通过复制该原型对象来创建一个和原型相同或相似的新对象。在这里,原型实例指定了要创建的对象的种类。用这种方式创建对象非常高效,根本无须知道对象创建...
抽象工厂模式相对于工厂方法模式来说,就是工厂方法模式是针对一个产品系列的,而抽象工厂模式是针对多个产品系列的,即工厂方法模式是一个产品系列一个工厂类,而抽象工厂模式是多个产品...
工厂方法模式(FACTORY METHOD)是一种常用的类创建型设计模式,此模式的核心精神是封装类中变化的部分,提取其中个性化善变的部分为独立类,通过依赖注入以达到解耦、复用...