桥接模式(Bridge Pattern)
定义:将抽象部分与它的实现部分分离,使他们可以独立地变化。
Bridge 模式是构造型的设计模式之一。Bridge模式基于类的最小设计原则,通过使用封装,聚合以及继承等行为来让不同的类承担不同的责任。它的主要特点是把抽象与行为实现分离开来,从而可以保持各部分的独立性以及应对它们的功能扩展。
桥接模式将实现和抽象放在两个不同的类层次中,从而能够使得它们可以独立改变。
桥接模式把变化部分抽象出来,使变化部分与主类分离开来,从而将多个维度的变化彻底分离。最后,提供一个管理类来组合不同维度上的变化,通过这种组合来满足业务的需要。
一般在抽象类中维护对行为实现(Implementor)的引用。
在将变化的部分抽象出来,也就是将行为实现为抽象类。
桥接主要用在跨越多个平台的图形和窗口系统上,当需要不同的方式改变接口和实现的时候。
类图:
生成器模式(Builder Pattern)
定义:将一个复杂对象的构建与它的表示分离,使同样的构建过程可以创建不同的表示
生成器模式,它封装了一个对象的构成,并且允许按照指定的步骤来构建。它允许对象通过多个步骤来创建,经常被用来创建组合对象。
生成器模式结构中的四种角色:
产品(Product): 所要构建的复杂对象。
抽象生成器(Builder): 抽象生成器是一个接口,该接口除了为创建一个Product对象的各个组件定义若干个方法外,还要定义返回Product对象的方法。
具体生成器(ConcreteBuilder): 实现Buidler接口的类。
指挥者(Director): 指挥者是一个类,需含有Builder接口申明的变量,指挥者的职责是负责向用户提供具体的生成器,利用具体生成器构造复杂的Product对象,它可以指定生成对象的步骤顺序。
生成器类图:
责任链模式(Chain of Responsiblity Pattern)
定义:使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。
责任链模式是一种对象的行为模式,当你想要让一个或者多个对象都能有机会对同一个请求进行处理的时候,可以使用该模式,责任链模式是Web项目中最经常用到的一个设计模式,比如是Apache Tomcat 的对Encoding的 处理,Struts2 的拦截器等等,都是基于责任链模式设计的。
通过使用责任链模式,可以为某一个请求创建一个对项链,每个对象扮演者处理器角色,并且都有一个后继对象。
类图:
蝇量(享元)模式(Flyweight Pattern)
定义:运用共享技术有效地支持大量细粒度的对象
如果想让某一个类的实例能够用来提供许多“虚拟实例”的话,
享元模式的重点在于分离变与不变。把一个对象的状态分成内部状态和外部状态,内部状态是不变的,外部状态是可变的。然后通过共享不变的部分,达到减少对象数量并节约内存的目的。
内部状态:通常指包含在享元对象内部的、对象本身的状态,不会随享元环境而变化,因此可共享。
外部状态:是享元对象之外的状态,取决于使用享元的场景,会根据使用场景而变化,因此不可共享。
外部状态和内部状态是相互独立的,外部状态的变换不会因起内部状态的变化。
享元对象的优点:减少对象数量,节省内存空间。
享元模式的缺点:维护共享对象,需要额外的开销(用一个线程来维护垃圾回收)。
享元模式的本质:分离与共享。
当一个类有许多个实例的时候,而这些实例能被同一个方法控制的时候,可以使用该模式
解释器模式(Interpreter Pattern)
定义:为语言创建解释器。
解释器模式是类的行为模式。给定一个语言之后,解释器模式可以定义出其文法的一种表示,并同时提供一个解释器。客户端可以使用这个解释器来解释这个语言中的句子。
它主要对每一个语法规则表示成一个类,方便于实现。
本文转自 zhao_xiao_long 51CTO博客,原文链接:http://blog.51cto.com/computerdragon/1178930