Head First Design Patterns
在更大的计划之前,先温习一下Design Pattern的功课。看了《Head First Design Patterns》里讲Decorator的样章,发现JOLT大奖不是白拿的,叙事能力之强,表达之清晰,不是那些满腹经伦的老先生可以比的。而且整个Pattern的讲述过程循序渐进,真的可以保证--小白都能学会设计模式。
可惜就只有样章。Head First系列的电子书都不好找,只好还是翻出老先生们的书来看。
这次温习很快做完,其实GOF80%的模式,都是基于一个原则:
优先使用对象组合,而不是类继承.
初学OO的人,都习惯用现实世界去映射程序世界,继承是最自然的思路。GOF其实就是在扭转这个思路,让大家习惯使用组合,委托和程序对象。
组合机制只要根据两大原则,就可以变化出绝大部分的GOF模式. 1.任何耦合都可以通过增加一个中间层来解耦 代表模式有: Facade , Mediator , Adapter 和 Factory/Abstract Factory , Proxy 2.通过组合来扩充对象特性,可以避免纯继承引起的类爆炸 代表模式有: Bridge , Decorator , Chain of Response , Strategy/Command
3.另外还有些独立的常用模式如Singleton , Visitor , Observe
写给自己看的重放慢镜: 1.Facade : 为了减低一个系统和另一个系统的内部类之间的耦合性。建立对象A代理系统的主要功能
2.Mediator:为了减低两个对象之间的耦合性。建立一个中间对象C,同时具有A和B的实例,并把C赋给A和B
3.Adapter: 为了匹配不同的对象使用同一接口。建立对象B,代理A的方法并使其接口匹配。
4.factory: 为了不依赖于具体对象而依赖于接口的创建对象。程序通过Factory获得对象。
5.Proxy: 除了不依赖于具体对象,还能在过程中插入动作.程序通过Proxy调用对象的方法(AOP)
6.Bridge: 如果对象特征向两个方向发展,Bridge能够避免两组对象特征的排列组合引起类爆炸。一组特征如大杯、中杯,一组特征如加奶、加糖。把其中一组特征抽象分离为接口2,把接口2的实例传入到主继承树中。
补充:Jsp教程,Java技巧及代码