架构师训练营 -W02S- 架构设计
编程的本质
从莱布尼茨的奇思怪想,到人类第一位程序媛,再到冯诺伊曼在ENIAC计算机上运行的第一个程序。人类总是在不断的思考者如何用计算机来解决现实中的问题。编程方式也经历了面向机器编程、面向过程编程、面向对象编程的发展。
面对对象设计
- 面对对象分析:将客观世界,即编程的业务领域进行对象分析。 
- 面对对象编程:并非指使用了面向对象的语言编程就是面对对象编程,而是指利用了面对对象的多态特性进行编程。 
- 面对对象设计的基本原则:高内聚、低耦合。 
面对对象软件设计原则(SOLID原则)
单一职责原则(SRP)
- 一个类只有一个引起它变化的原因。 
- 违反SRP原则的后果:脆弱性和不可移植性。 
- 一个类的代码长度不要超过一屏。 
开/闭原则(OCP)
- 对扩展是开放的,对更改是封闭的。 
- 不需要修改软件实体(类、模块、函数等),就应该能实现功能的扩展。 
- 抽象是实现不修改而扩展的关键。 
里氏替换原则(LSP)
- 子类型必须能替换基类型。 
- LSP要求,凡是使用基类的地方,一定也适用于其子类。从更广泛的意义来看,子类的“契约”不能比基类更严格。 
- 重构代码解决里氏替换原则的方法:1、提取共性到基类。2、优先使用组合。 
接口分离原则(ISP)
- 不应该强迫客户程序依赖他们不需要的方法。 
- ISP和SRP的关系:1、SRP应尽量拆开。2、ISP在拆不开的情况下,使用接口进行隔离。 
依赖倒置原则(DIP)
- 高层模块不能依赖低层模块,而是都依赖于抽象;抽象不能依赖实现,而是实现依赖抽象。 
- DIP倒置了模块或包的依赖关系,以及开发顺序和职责。 
- 对于软件层次化,软件高层应被重用,高层决定低层。高层定义接口,低层实现接口,高层、低层都依赖实现。 
- DIP也被称为好莱坞规则:Don't call me, I'll call you. 
- 应用程序不要调用框架,而是在框架内“填肉”,调用应用程序。 
 
  
  
  
  
  
  
  
  
  
    
评论