Interface Project

比如下面的例子:

projectStatusBar -->(refer to)projectApplication,因为它需要取到application level的一些数据(似乎不大合理,不应该这样依赖);现在需要给application对象增加一个新的成员变量mStatusBar,这就造成了新的dependency关系:projectApplication--> projectStatusBar。这就出现了circular dependency。

解决方法非常普通并且普遍 :

1. (假设并且一定已经)有一个interface project,它的任务就是包含一堆interface。我在里面加一个IStatusBar并定义需要在application类里使用的功能。

2. 在application里加个成员变量时IStatusBar类型。这样ProjectApplication-->interface project. 有其他人(code out of this project)会赋值给它。

3. 在projectStatusBar里,让StatusBar实现IStatusBar,这样ProjectStatusBar --> interface Project.

4. 在另外一个project里,把StatusBar实例赋值给application对象。那么这个project --> ProjectApplication + ProjectStatusBar。这种作用的project应该很容易找到,比如ProjectStatusBar就足够了。

5. Now it works without bringing in circular dependency relationship! 

posted @ 2011-03-25 17:58  能巴  阅读(242)  评论(0编辑  收藏  举报