作者:Brett McLaughlin、Gary Pollice、David West
为了避免不友好的匹配,我们运用枚举类型,尽可能丢弃String的比较:
更多的选择
但这么做还不够,我们希望给客户更多的选择,即搜索要返回所有满足客户搜索条件的所有吉他,而不是库存中第一把符合条件的。
为此我们对系统要进行如下改造:
封装变化
随着Rick在向客户推销吉他时发现,其实客户在搜索时并不需要输入完整的信息,他们只关心制造商、型号、类型以及使用的木料这些特性,对于序号和价格不是他们需要搜索的特性。
这意味着,系统在搜索时,不应该对每一把吉他的所有特性进行比对,只需要比对其中的一些特性就可以了。因此,我们先要将Guitar类中那些客户关心的特性找出来:
最后,我们将Inventory进行相应改造,让它针对GuitarSpec搜索,而不是原先的Guitar:
另一方面,对于吉他而言,序号和价格这两个特性是一直存在的,几乎不会改变的,但是其他特性有可能随着Rick的事业不断扩大而改变,例如如果要增加一种新的特性——弦数。如果按照本文开头的设计,需要改用Guitar类和Inventory类才能满足这一需求,而现在只需要改动GuitarSpec类就可以满足了: