在这一章,作者回顾了以前的一个设计.实际上是说明了一个这样的问题.一个系统有几种不同的特定实现,而作者希望另外的对象(系统)通过相同的方式和这些不同的实现进行交流.
作者现在有两个系统,一个是CAD/CAM系统,另外一个是一个专家系统.这个专家系统比较稳定,基本不变化,而且耗资巨大.而那个CAD/CAM系统为这个专家系统提供数据,它的变化相对频繁.至少作者就碰到了两个版本,这两个版本对外的接口完全不同.实现方式也不同.虽然它们包含的信息在本质上是一样的.
因此,作者的一个很重要的任务就是,用一个一致的方法来从CAD/CAM中提取信息给专家系统使用,这样,当CAD/CAM系统变化的时候,专家系统的维护降到最低.作者遇到的这个问题是很有普遍性的.
在这个具体的例子了,作者给出了一个他的解决方案的高层视图和类图.在高层视图中,一个比较重要的东西是Our Geometry Extractor "几何结构提取",这个东西使用不同版本的CAD/CAM系统,同时被专家系统使用.它的初始化是由应用程序来完成的.应用程序同时也初始化专家系统.
在这里,专家系统通过"几何结构提取"这个东西和CAD/CAM系统的V1,V2以及以后的不同版本打交道,这里的一个工作是让V1,V2和以后的版本在专家系统看起来都是一样的.
在作者设计的类图中,专家系统通过Model类和CAD/CAM系统相关联,Main类负责将版本合适的Model类(V1Model或者V2Model)实例化.
在高层视图中,作者有这么一句话"虽然在'几何提取结构'的层次上很明显需要多态,但在'部件'的层次上却不需要,因为专家系统需要知道自己处理的部件的类型".对于这话,没有明白.等看到后面说不定就明白了,或者有好心人给我解释下.