使用new的Code都违反了DIP.

  • 但是,依赖于稳定的具体类,是无害的.例如string.
  • 另一方面,对于正在开发中的APP,很多具体类是易变的.此时应该依赖于抽象接口.
  • Factory模式:只依赖于抽象接口就能创建出具体对象的实例.
  • 对Test Fixture使用工厂
  • 编写UT时,希望把一个模块和它使用的模块隔离起来,从而单独测试该模块的行为.
  • 工厂的使用
    • 遵循DIP,对于系统中所有的易变类都要使用工厂.
    • 但是,工厂是复杂的,为了创建一个新类,需要1个表示该类的接口和1个其工厂的接口.实现这两个接口的具体类.
    • 使得高层决策模块在创建类的实例时无需依赖这些类的具体实现.
    • 使得一组类的完全不同系列的实现间进行切换.
    • 只在需要时才使用!

[Agile Software Development(Principles,Patterns,and Pracitices)]

最新文章

  1. listview嵌套gridview,并实现grid元素部分显示以及点击展开与折叠
  2. [转]office 2016 4合1/3合1 专业版 增强版 精简绿色安装版
  3. AC日记——字符串的展开 openjudge 1.7 35
  4. Java 操作 Redis 高级
  5. apache2: Could not reliably determine the server's fully qualified domain name
  6. Ext.Net 问题收集
  7. CollapsingToolbarLayout
  8. 初识QML学习机制
  9. C#获取客户端相关信息
  10. 前端MVVM学习之KnockOut(二)
  11. LigerUI权限系统之组织结构
  12. 信号量(Semaphore)
  13. Burpsuite之Burp Collaborator模块介绍
  14. [C++]动态规划系列之币值最大化
  15. POJ 2562
  16. arduino按钮使用的两个小实验
  17. 跨平台的移动应用开发框架-Sencha Touch
  18. 突破单机多实例Elasticsearch
  19. C# 延时函数 非Sleep
  20. return, break and continue

热门文章

  1. FragmentTabHost
  2. python之优雅处理套接字错误
  3. 关于C# 窗体自动隐藏和加载的问题
  4. centos6.5搭建lnmp环境
  5. springMVC 实现ajax跨域请求
  6. css3之background-clip与background-origin的区别
  7. Android AsyncTask完全解析,带你从源码的角度彻底理解
  8. MongoDB介绍与windows下安装
  9. (转)四种常见的 POST 提交数据方式
  10. C++中类的前向声明的用法