本书设计实例从面向对象的设计中精选出23个设计模式,总结了面向对象设计中最有价值的经验,并且用简洁可复用的形式表达出来。本书分类描述了一组设计良好,表达清楚的软件设计模式,这些模式在实用环境下有特别有用
我们不仅需要知道迷宫的各部分,还要定义一个用来表示房间集合的 M a z e类。用 R o o m N o操作和给定的房间号,M a z e就可以找到一个特定的房间。
R o o m N o可以使用线形搜索、 h a s h表、甚
至一个简单数组进行一次查找。但我们在此处并不
考虑这些细节,而是将注意力集中于如何指定一个
迷宫对象的构件上。
我们定义的另一个类是 M a z e G a m e,由它
来创建迷宫。一个简单直接的创建迷宫的方法是使
用一系列操作将构件增加到迷宫中,然后连接它们。
例如,下面的成员函数将创建一个迷宫,这个迷宫由两个房间和它们之间的一扇门组成:
考虑到这个函数所做的仅是创建一个有两个房间的迷宫,它是相当复杂的。显然有办法使它变得更简单。例如, R o o m的构造器可以提前用墙壁来初始化房间的每一面。但这仅仅是将代码移到了其他地方。
这个成员函数真正的问题不在于它的大
小而在于它不灵活。它对迷宫的布局进
行硬编码。改变布局意味着改变这个成
员函数,或是重定义它—这意味着重新
实现整个过程—或是对它的部分进行改
变—这容易产生错误并且不利于重用。
创建型模式显示如何使得这个设计更灵
活,但未必会更小。特别是,它们将便
于修改定 义一个迷宫构件的类。