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!
转载于:https://www.cnblogs.com/taoxu0903/archive/2011/03/25/1995756.html
Interface Project相关推荐
- 【Android Gradle 插件】Gradle 映射文件 ( settings.gradle 映射为 Settings 类 | build.gradle 映射为 Project 类 )
文章目录 一.settings.gradle 映射为 Settings 类 二.build.gradle 映射为 Project 类 Android Plugin DSL Reference 参考文档 ...
- Project的介绍
文章目录 1. Settings 2. Project 2.1 常用 project API 2.2 project 属性 2.3 文件相关 API 2.4 其它API 1. Settings 讲到s ...
- Gradle学习之基础篇
一.gradle基础概念 Gradle是一个基于Apache Ant和Apache Maven概念的项目自动化构建工具.Gradle抛弃了基于各种繁琐的XML,使用一种基于Groovy的特定领域语言( ...
- Remoting Practice Sample
Remoting Practice Sample 这两天研究了一下Remoting, 改了MSDN 的例子. 那个例子不是很方便. 我做了如下改进: 整个sample做成一个solution 用了wi ...
- repo入门和基本用法
repo是什么? 官方的定义:Repo是谷歌用Python脚本写的调用git的一个脚本,可以实现管理多个git库. 个人理解:repo这个工具,是一个脚本.这个脚本是对git库的管理. 类似什么呢,类 ...
- linux操作系统学习网站整理(100个)
linux操作系统学习网站整理(100个) 评选出的这100个优秀站点,将按照下述20个类别作以评介: (一) 文件下载 (二) 幽默娱乐 (三) 相关新闻 (四) 通用硬体 (五) 专用硬体 (六) ...
- Deep Learning(深度学习)学习笔记整理系列
一.概述 Artificial Intelligence,也就是人工智能,就像长生不老和星际漫游一样,是人类最美好的梦想之一.虽然计算机技术已经取得了长足的进步,但是到目前为止,还没有一台电脑能产生& ...
- 【Android 组件化】使用 Gradle 实现组件化 ( Gradle 变量定义与使用 )
文章目录 一.顶层 Gradle 定义扩展变量 二.获取顶层的 Gradle 对象 三.Module 中使用 Gradle 变量 四.Gradle 中打印变量值 五.涉及到的 Gradle 构建脚本 ...
- [转]机器视觉开源代码集合
一.特征提取Feature Extraction: SIFT [1] [Demo program][SIFT Library] [VLFeat] PCA-SIFT [2] [Project] Affi ...
- 计算机视觉、机器学习相关领域论文和源代码大集合
注:下面有project网站的大部分都有paper和相应的code.Code一般是C/C++或者Matlab代码. 最近一次更新:2013-3-17 一.特征提取Feature Extraction: ...
最新文章
- 动车废票二维码将泄露个人信息 暂无防止破解法
- tta部署_YOLOv5项目介绍
- 终身学习这件事,比你想的还要重要
- 6.4 JAVA 方法重载
- Openstack介绍
- [剑指offer][JAVA]面试题第[32-3]题[从上到下打印二叉树 ][BFS]
- 以前看过一个压缩过的.exe,运行会播放长达半小时的动画,却只有60KB,个人认为其中的原理...
- 信息安全工程师笔记-网络设备安全
- oracle 尝试分配内存不足,ORA-04030: 在尝试分配...字节(...)时进程内存不足的原因分析解决方法...
- Head First Java
- HDU 4512 吉哥系列故事——完美队形I(最长公共上升子序列 LCIS)
- win7局域网共享设置_win7系统打印机共享设置(详细图文步骤)
- 数据库设计——概念模型
- VS Code 必须要安装的插件(超详细)
- HDUOJ 6441 Find Integer
- Xcode的一种编译问题:Error: building could produce unreliable results
- 数值分析——曲线拟合的最小二乘法
- 管理 - STAR法则
- [unity]使用Unity粒子系统制作跑尘
- GameFramework篇:AssetsBundle Tools配置
热门文章
- libc库和系统调用
- Android 网络代理的创建
- Centos66 编译 Freeswitch mod_shout mp3录音模块
- linux下交叉编译ffmpeg,并加入H264编码支持
- pfn_to_page 函数
- Linux shell 查找操作
- 如何提高Android系统Aututu benchmark跑分
- rdlc报表 矩形高固定_什么是 BI?和报表有什么关系?有了 BI 还要做报表吗?
- oracle 多实例 端口,Oracle一个实例配置多个listener或多个端口
- 5加载stm32 keil_【STM32笔记】在SRAM、FLASH中调试代码的配置方法(附详细步骤)...