“确定接口是理想选择,因而应该总是选择接口而不是具体的类。”这其实是一种诱饵。当然,对于创建类,几乎在任何时刻,都可以替代为创建一个接口和一个工厂。

许多人都掉进了这种诱惑的陷阱,只要有可能就去创建接口和工厂。这种逻辑看起来是因为需要使用不同的具体实现,因此总是应该添加这种抽象性。这实际上已经变成了一种草率的设计优化。

任何抽象性都应该是应真正的需求而产生的。当必须时,你应该重构接口而不是到处添加额外级别的间接性,并由此带来的额外的复杂性。这种额外的复杂性非常显著,如果你让某人去处理这种复杂性,只是因为你意识到由于以防万一而添加了新接口,而没有其他更有说服力的原因,那么好吧,如果我碰上了这种事,那么就会质疑此人所做的所有设计了。

恰当的原则应该是优先选择类而不是接口。从类开始,如果接口的必须性变得非常明确,那么就进行重构。接口是一种重要的工具,但是他们容易被滥用。

最新文章

  1. AFN----AFNetworking
  2. STM32F1和STM32F4 区别
  3. [Js]拖拽
  4. DBA_Oracle Erp加密和解密账户密码(案例)
  5. PHP常用类型判断函数总结
  6. 结构体的序列和还原(使用Move方法)
  7. 采用大杀招QEMU调试Linux内核代码
  8. js的addEvertLIstener方法
  9. thphp5.0学习笔记(一)
  10. 用java代码发送http请求
  11. Hibernate之深入Hibernate的配置文件
  12. CentOS 安装 Ansible 以及连接Windows server的办法
  13. sass基础学习(一)
  14. Class_third_实验报告
  15. 导出文件为excle
  16. Zabbix 监控 Cisco ASA5525 流量
  17. Chapter 3. Lexical Structure
  18. 20155328 2016-2017-2 《Java程序设计》 第一周学习总结
  19. JQ笔记-加强版
  20. Vlmcsd(KMS)激活服务器程序

热门文章

  1. ArcGIS支持MongoDB数据源
  2. 匈牙利算法(codevs2776)
  3. HEU KMS Activator v11.1.0 Windows激活
  4. AsyncTask异步任务类使用学习
  5. JSON与js对象序列化
  6. git diff命令
  7. JavaScript的DOM操作-重点部分-第一部分
  8. 7 static关键字
  9. 【USACO 1.3】Combination Lock
  10. OPENGL的入门第一个程序——Hello World