2009年5月12日星期二

利用inferface切断依赖

背景:
存在模块A、模块B,其中A是common的,发现有些B中的class BClass应该移到A中。
当把BClass 移到模块A中后发现,BClass的有些方法依赖于模块B中的一个类BbClass。而BbClass又跟模块B中许多其它类强烈耦合。

问题:
总不能把所有依赖的东西都move到模块A中呀!

解决:
1)根据BbClass,抽象出一个接口(或抽象类)--比如叫做IBClass,这个接口要定义在模块A中。
2)让BbClass实现IBClass。
3)修改模块A中对BbClass的调用接口为对IBClass的调用。