zoukankan      html  css  js  c++  java
  • 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! 

  • 相关阅读:
    linux笔记
    初探hook的键盘获取
    python pyHook安装
    转: ZigBee/Z-Stack CC2530实现低功耗运行的配置简介
    三种zigbee网络架构详解
    adc verilog spi 时序
    dac verilog ad5601
    verilog 三段式状态机的技巧
    fpga 状态机 检测1011序列
    lattice diamond fpga 状态机的理解
  • 原文地址:https://www.cnblogs.com/taoxu0903/p/1995756.html
Copyright © 2011-2022 走看看