-- 策略模式
定义算法族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化独立于使用算法的客户。
利用多态性来完成类中易于变化的部分。不易变化的部分使用继承。最后组合最终的类。
-- 观察者模式
类似于订阅报纸。观察者如果需要观察某个对象必须先注册(先订阅报纸),当被观察的有变化时就会通知观察者(有新报纸时,送报),不想被通知时就要退订(退订报纸)。
Java中已有Observable类用于实现观察者模式。
>> 应用:Tomcat中控制生命周期的Lifecycle使用的就是观察者模式,还有对Servlet实例的创建、Session的管理、Container等都是同样的管理。
-- 装饰者模式
将某个类重新装扮一下,使得它比原来在功能上更强大, 但是作为原来的这个类的使用者不应该感受到装饰前与装饰后有什么不同,否则就破坏了原有类的结构,所以装饰器模式就要做到对被装饰类的使用者透明
>> 应用:Java中的FilterInputStream就是装饰者角色,它实现了InputStream抽象组件的所有接口,BufferedInputStream又是对FilterInputStream的进一步增强。其实就是应用了Java多态性
-- 适配器模式(adapter)
把一个类的接口变换成客户端所能接受的另一种接口,从而使两个接口不匹配而无法在一起工作的类能够在一起工作
>> 应用:Java IO中就有这样的需求,如InputStreamReader和OutputStreamWriter分别继承了Reader和Writer,但是要创建他们就需要传入InputStream和OutputStream,因此InputStreamReader和OutputStreamWriter就是将InputStream和OutputStream适配到Reader和Writer
-- 门面模式(facade)
把一个东西封装成一个门面,好与大家更容易的进行交流。这种设计模式主要用在在一个大的系统有多个子系统时,这是多个子系统肯定要相互通信,但是每个子系统中又不能将自己的内部数据过多地暴露给其他系统,不然就没有必要划分子系统了。每个子系统就会设计一个门面,把别的系统感性许的数据封装起来,通过这个门面进行访问。
>> 应用:Tomcat中门面模式使用得很多,因为Tomcat中有很多组件,每个组件要相互交互数据,用门面设计模式隔离数据是很好的方法。
-- 命令模式
命令模式的主要作用是封装命令,把发出命令的责任和执行命令的责任分开,也是一种功能的分工。不同的模块可以对同一个命令做出不同的解释。
命令模式通常包含几个角色:Client(创建一个命令,并决定接收者)、Command(命令接口,定义一个抽象方法)、ConcreteCommand(具体命令,负责调用接收者的相应操作)、Invoker(请求者,负责调用命令对象执行请求)、Receiver(接收者,负责具体实施和执行一次请求)。
>> 应用:Tomcat中Connector作为抽象请求者,HttpConnector作为具体请求者,HttpProcessor作为命令,Container作为命令的抽象接收者,ContainerBase作为具体的接收者,客户端就是应用服务器Server组件。Server首先创建命令请求者HttpConnector,然后创建命令HttpProcessor对象,再把命令对象交给命令接收者ContainerBase容器来处理。
~~~~~~~~~~~~~~~~
还会继续更新。。。
阅读(1381) | 评论(0) | 转发(0) |