《研磨设计模式》是一本非常优秀的设计模式著作,在我看过的基本设计模式书里,可以算是适合新手阅读,又非常全面详尽的书,可是这本书可能由于种种原因,有一些瑕疵。我将陆续把这些瑕疵挑出列在这里,希望作者能在再版的时候加以修正,以使得这本书更加完美。
第二章简单工厂中,可配置的简单工厂写得有问题,它的功能不是不需要客户端知道所要的产品是哪个,而是当增加产品是只需修改配置文件而无需修改工厂类。
这点在24页还写得好好的,到了第26页就完全写错了。
第三章第42页Facade实现成为interface的附带好处,这个好处在Facade实现成为class也可以用。
第45页上边第四行的“吸收和消化”应该改为“消化和吸收”,具体可以查阅词典,生物学中的吸收和消化是有顺序的。
第四章的62页的双向适配器有一点没有说明,那就是如果旧客户端使用文件存储日志、新客户端使用数据库存储日志应该怎么办。笔者认为应该不使用适配器,直接使用原来的接口。
71页的倒数第二行最后一个词应该是“实例”而不是“示例”。
第七章P147DAO的第一个例子应该是用了抽象工厂模式,只是只有一个产品簇。
第九章P202中间部分给两行代码加了删除线,其中的第一行是误加的,因为在P204的程序中用了这个方法。
P208中间蓝色字“1.Java中的深度克隆”应改为“2.Java中的深度克隆”。
P204最下边的“浅度克隆”后边,String类型虽然不用特殊处理,但它不是传值传递的数据。
以下为验证代码:
public static void main(String[] args) { // TODO code application logic here String a ="abc"; String b=a; System.out.println(a==b); b="bcd"; System.out.println(a==b); System.out.println(a); System.out.println(b); }运行结果为:
run:
true
false
abc
bcd
成功生成(总时间:1 秒)
true表明String是在传引用,false表明String两个引用一个改变不会影响到另外一个。
之后的章节我还没有看,等以后陆续挑出瑕疵。