架构师训练营 -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.
应用程序不要调用框架,而是在框架内“填肉”,调用应用程序。
评论