一句话设计模式

====================================================================================
有一些聪明的OO技巧,允许系统在不修改代码的情况下,进行功能扩展,想想观察者模式。。。
通过加入新的观察者,我们可以在任何时候扩展主题,而且不需向主题中添加代码。
====================================================================================
策略模式=【抽象类定义公用变量和行为+算法解决类给客户】+【行为接口+具体行为类】
Strategy和Factory有一定的类似,Strategy相对简单容易理解,并且可以在运行时刻自由切换。Factory重点是用来创建对象。
Strategy策略模式是属于设计模式中对象行为型模式,主要是定义一系列的算法,把这些算法一个个封装成单独的类.
实际整个Strategy的核心部分就是抽象类的使用,使用Strategy模式可以在用户需要变化时,修改量很少,而且快速.
Strategy适合下列场合:
1.以不同的格式保存文件;
2.以不同的算法压缩文件;
3.以不同的算法截获图象;
4.以不同的格式输出同样数据的图形,比如曲线或框图bar等
抽象类里有行为接口的调用,行为抽离出来了。组合而不是继承。
【应用场景:可以针对MYSQL、ORACLE分别写几个门面,从而进行灵活切换】
====================================================================================
观察者模式=【1出版者:主题subject】+【n订阅者:观察者Observer】
1.订阅者注册后,出版者会给注册者发新东东
2.订阅者可随时取消注册
3.只要出版者持续着生命则会一直有订阅者注册和订阅者取消
出版者会一直给订阅者池子里发最新消息
数据维护只在出版者那,不在订阅者维护。方便管理。
定义:观察者模式定义了对象之间的一对多依赖,当一个对象改变状态时,它的所有依赖者都会收到通知并自动更新。
例子:气象站-》WeatherData(气象站提供的天气数据get及更新数据时被调用接口dataChanged()-》公告板
TODO:实现dataChanged()【利用数据更新公告板】
一种实现:dataChanged()里直接调用公告板类进行更新:扩展性不好
【应用场景:可以用于监控】
====================================================================================
装饰者模式=【抽象组件】+【组件】+【抽象装饰者】+【具体装饰者】
1.装饰者和被装饰对象有相同的超类型。
2.你可以用一个或多个装饰者包装一个对象。
3.既然装饰者和被装饰对象有相同的超类型,所以在任何需要原始对象(被包装)的场合可以用装饰过的对象代替它。
4.装饰者可以在所委托被装饰者的行为之前或之后,加上自己的行为,以达到特定的目的。
5.对象可以在任何时候被装饰,所以可以在运行时动态地、不限量地用你喜欢的装饰者来装饰对象。
定义:动态地将责任附加到对象上。苦要扩展功能,装饰者提供了比继承更有弹性的替代方案。
【应用场景:要在目标类里的该当前后加一些日志等作为扩展】
====================================================================================
装饰者模式:将对象包装起来,赋予它们新职责,=》主模块注入进扩展模块里。
适配器模式:包装某些对象,使它们不像自已而是像别的东西。=》继承主模块,将扩展模块依赖注入。
适配器改变了接口,以符合需求。
外观模式:提供子系统一个简化接口。而适配器改变接口符合客户期望。
====================================================================================
外观模式的意图就是提供一个简单的接口,从而让我们的子系统更易于使用.
为子系统中的一组接口提供一个统一接口。Facade模式定义了一个更高层的接口,使子系统更加容易使用。在构建一个层次化的系统的时候,可以使用Facade模式定义系统的每一层的入口,如果层与层之间是相互依赖的,则可以限定他们仅通过Facade进行通信,从而简化了层与层之间的依赖关系。
意思当我们设计系统的时候要尽量减少对象间的交互,只留下几个密友.就是不要让太多的类耦合在一起,从而避免了修改系统的一部分功能会影响其它的功能.从而减少了维护的花费.
【应用场景:将JDBC那几句代码写到共用类里】
====================================================================================
javaIO装饰者模式
Tomcat 中门面设计模式使用的很多,因为 Tomcat 中有很多不同组件,每个组件要相互交互数据,用门面模式隔离数据是个很好的方法。
Tomcat 中观察者模式也有多处使用,前面讲的控制组件生命周期的 Lifecycle 就是这种模式的体现,还有对 Servlet 实例的创建、Session 的管理、Container 等都是同样的原理。
Tomcat 中命令模式在 Connector 和 Container 组件之间有体现,Tomcat 作为一个应用服务器,无疑会接受到很多请求,如何分配和执行这些请求是必须的功能。
TOMCAT:Container 容器的设计用的是典型的责任链的设计模式

====================================================================================

Template模板模式

抽象类里定义抽象方法,具体的实现交给子类

猜你喜欢

转载自cwj158.iteye.com/blog/1170158