设计关键词

复用,级别:代码、类、组件、架构(框架)、服务、系统、设计、分析、算法、数据结构

抽象、解耦与内聚、免HardCode

解耦:  目的:易于应对变化的需求。     从对象创建和引用小议解耦

  1)  解耦用处:能够提高代码复用性..进而提高开发速度. 到后面项目运行的时候也能够可以比较轻松地替换新技术;方便进行模块测试。

  2)  一些手段:添加中间层、面向接口编程(静态解耦)、动态解耦{反转控制IoC、依赖注入DI、分离关注点SOC、面向切面AOP}、编译期静态耦合 --> Runtime动态耦合、事件、消息、XML配置文件、annotation、...

  3)  Annotation PK Interface  Hurb Sutter说各种编程范式,包括面向对象,核心都是某种管理依赖性,降低依赖性的技术,那么.Net Attribute, XDoclet, Java Annotation代表的Attribute Oriented Programming在降低依赖性上又前进了多少呢?

   

分离

1) 算法与数据分离

2) 业务与表示层(界面、页面)分离、业务与持久化分离、业务与权限分离

  

过度设计:

1. 过度设计是因为假想了可能不需要的需求造成的,开发框架的形成也应该是迭代的、重构的。 -- 哪些是真的需求? 从项目管理角度,要求设计刚好满足要求,而不是超过。

2. “灵活”在某种程度上,就意味着“复杂”。太灵活的东西,肯定是越复杂,越需要花费更多的时间、精力去理解它。

3. 不能为了分离而分离、为了解耦而解耦。  

4. 过早优化是万恶之源。

     一开始,尽量用简单的方式实现,不要考虑过多细节。除非在前期100%确定是需要被优化,被分离的

     一切伟大的代码,都是在发展中不断演变、不断重构出来的。

其它

相同的事情只作一次永远是一个合格的系统架构师首先要遵循的原则,而透过现象看到事物的本质则是对架构系统最基本的要求。

一个OO中的开发原则,创建对象的不要使用对象,使用对象的不要创建对象

一个良好的设计应该是系统的每一部分都是可替换的。

  

史上最全设计模式导学目录(完整版)

原文地址:https://www.cnblogs.com/pdmm/p/3539454.html