这本书写得挺好的,通俗易懂。以前买了那本GoF的书,试图看了几遍也没看完几个模式。每页的信息量不大,书特别厚,所以看完以后会有一种错觉:看完了好厚一本书!
这本书把设计模式讲清楚的同时把一些OO思想也解释得很清楚,至少在合上书的时候”多用组合,少用继承“这个原则已经牢记于心。
1. 代码虽然是Java写的,但是很好懂
书中的设计模式是以Java代码展现的,不过学过C++的也能看懂,用C++实现也不是很难,注意以下几点就可以了:
* Java里的对象:类似C++里对象的引用
* Java里的接口:在C++里,把类里的函数声明为类似 virtual void f() = 0 就可以了
* 当谈到“Java不支持多重继承,所以只能...”时,会心一笑就可以了
2. 知道设计模式以后才知道代码之后的原理
初学Java的IO时,经常会碰到下面的代码(代码来源于stackoverflow):
First open an inputstream of it:
> FileInputStream fis = new FileInputStream("/objects.gz");
We want speeeed, so let's buffer it in memory:
> BufferedInputStream bis = new BufferedInputStream(fis);
The file is gzipped, so we need to ungzip it:
> GzipInputStream gis = new GzipInputStream(bis);
以上的代码写成一行就是 GzipInputStream gis = new GzipInputStream(new BufferedInputStream(new FileInputStream("/objects.gz")));
其实上面用的就是装饰者模式。知道这个模式之前,可能不知道为什么要那样写,为什么能那样写;知道之后,对代码后面的世界又有了进一步的理解。