http://book.csdn.net/bookfiles/173/1001737789.shtml
....
从这段代码可以看 出,FontPropertiesPanel类中有对父类SampleTextFrame的引用,并当字体的某个属性变化时,调用父类中的 refreshDisplayFont()方法。乍一看,该设计是能够接受的,但实际上有个很大的缺点:这两个类无法单独使用。也就是 说,SampleTextFrame类与FontPropertiesPanel类是紧密耦合的,因而非常不适合重用。如果想让FontPropertiesPanel作为SampleTextFrame之外的用户界面组件的一部分,以目 前这种形式是不可行的,因为在当前设计中,该类只能与SampleTextFrame实例共同运作 。图2-2显示了这两个类之间的关系。
图2-2 FontPropertiesPanel类对 SampleTextFrame类的依赖
大大限制了FontPropertiesPanel类的重用潜力
由于FontPropertiesPanel类中提 供的功能可能会用到其他上下文环境中,只有断开与SampleTextFrame的耦合,该类才适合重用。现存的依赖性是由于 FontPropertiesPanel类直接调用了refreshDisplayFont()方法,因而不但使FontPropertiesPanel 依赖于SampleTextFrame的存在,而且还依赖于refreshDisplayFont()方法的实现。很明显,应该用某种手段将字体变化通知文字显示功能,使FontPropertiesPanel与 SampleTextFrame成为松耦合 。
解决该问题有一个简单而又强大的办法:将类耦合到接口上而不是另一个类上 。
类 设计中的另一个重点:如果将功能分配给一个类,那么该类就应该包含执行该功能所需的信息。
创建 可重用类的另一个重要准则是,将功能划分为两部分:公用的、可重用的功能 与程序专用的、不可重用的功能 。有了这样的划分,就能够将公 用功能放在父类 中,而把应用程序专用的逻辑功能放到子类 中,提高可重用性。