ISBN:978-7-5083-5393-7
Head Fisrt 系列的书,都“写”的很有创意。如果想看的主题被Head First系列选中,那是相当幸运了。
或者假若手头没有其他非常想读的东西,那么找本Head Fisrt看看也是很惬意的事情。
该书《Head Fisrt 设计模式》仔细讲解了14种模式,按类目分,分别是
创建型:Singleton、Abstract Factory、Factory Method
行为型:Template Method、Iterator、Command、Observer、State、Strategy
结构型:Decorator、Composite、Proxy、Facade、Adapter
(其他9种在附录:Bulder、Protoype、Mediator、Visitor、Memento、Interpreter、Chain of Responsibility、Bridge、Flyweight)
另外,用模式的眼光(观察者、策略、组合)剖析了MVC这样的应用模式。(所谓应用模式就是建立系统架构的模式)
抄一下OO原则和模式的定义
OO原则:
封装变化
多用组合,少用继承
针对接口编程,不针对实现编程
为交互对象之间的松耦合设计而努力
对扩展开放,都修改关闭
依赖倒置原则(P139)依赖抽象,不要依赖具体类(变量不可以持有具体类的引用,不要让类派生自具体类,不要覆盖基类已实现的方法)
最少知识原则:只和你的密友谈话(该类本身,被当作方法的参数而传递进来的对象,此方法所创建或实例化的对象,对象的任何组件)。
好莱坞原则:别找我,我会找你(高层组件决定什么时候和怎么样使用低层组件)
类应该只有一个改变的理由(尽量让每个类保持单一责任)
模式定义:
策略模式–定义算法组,分别封装起来,让他们之间可以互相替换,此模式让算法的变化独立于使用算法的客户。
观察者模式–在对象之间定义一对多的依赖,这样一来,当一个对象改变状态,依赖它的对象都会接到通知,并自动更新。
装饰者模式–动态地将责任附加到对象上,想要扩展功能,装饰者提供有别于继承的另一种选择。
抽象工厂模式–提供一个接口,用于创建相关或依赖对象的家族,而不需要明确指定具体类。
工厂方法模式–定义了一个创建对象的接口,但是由子类决定要实例化你的类是哪一个。工厂方法让类把实例化推迟到子类。
单件模式–确保一个类只有一个实例,并提供全局访问点。
命令模式–将请求封装成对象,这可以让你使用不同的请求、队列,或者日志请求来参数化其他对象。命令模式也可以支持撤销操作。
适配器模式–将一个类的接口,转换成客户期望的另一个接口。适配器可以让原本接口不兼容的类合作无间。
外观模式–提供了一个统一的接口,用来访问子系统中的一群接口。外观定义了一个高层接口,让子系统更容易使用。
模板方法模式–在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中(抽象的方法)。模板方法使得子类可以在不改变算法结构的情况下重新定义算中的某些步骤(不是抽象的hook方法)。
迭代器模式–提供一种顺序访问一个聚合对象的各个元素,而又不暴露其内部的表示。
组合模式–允许你将对象组成树形结构来表现“整体/部分”的层次结构。组合可以让客户一致的方式处理个别对象和对象组合。
状态模式–允许对象在内部状态改变时改变他的行为,对象看起来好像修改了他的类。
代理模式–为另一个对象提供一个替身或占位符以访问这个对象。
当然,书中讲的可不像我所列的这么缺乏趣味,虽然是本大块头,但是翻页倒是快的。难得会读这么厚的书,所以让我们把这些模式放进大脑里吧。但是不要去刻意的使用他们哦。
最后,套用一句Head Fisrt系列图书话:如果计算机的书读起来能像读金庸一样,那世界一定会变得很酷。
或许就像兰迪·波许(Randy.Pausch)的Alice(http://www.alice.org/)世界一样。