写点什么

架构师训练营第 2 周学习总结

用户头像
netspecial
关注
发布于: 2020 年 09 月 26 日

2.1 从编程历史看面向对象编程的本质与未来

面向对象编程的三要素:封装(Encapsulation), 继承(Inheritance), 多态(Polymorphism)

框架设计师架构师基本的技能之一。

2.2 设计臭味:糟糕的代码有哪些特点?

  • 一个软件开始开发出来,甚至还没有开发出来,需求就开始变更了。系统上线以后,又开始变更。在整个软件生命周期中,需求在不断的变更。在变更中,设计能不能维持住,能不能符合要求,这才是衡量设计好不好的依据。

  • “臭味”:

  • 僵硬 (Rigidity) - 不易改变。

  • 脆弱 (Fragility)

  • 不可移植

  • 导致误用的陷阱

  • 晦涩 (Opacity)

  • 过度设计、copy-paste代码



2.3 开闭原则介绍及代码分析

  • OOD 原则一:开/闭原则(OCP)

  • OCP - Open/Closed Principle

  • 对于扩展是开放的(Open for extension)

  • 对于更改是封闭的(Closed for modification)



2.4 依赖倒置原则介绍及代码案例分析

  • OOD 原则二:依赖倒置原则(DIP)

  • DIP - Dependency Inversion Principle

  • 根据依赖倒置原则,高层模块不再依赖底层模块,而是依赖一个抽象。这个抽象是一个规范,可能是一个接口,是一个配置,大家都依赖这个规范,这个接口进行编程。所以开发顺序就变成了先开发这个接口,这个抽象。然后基于这个抽象,高层模块去调用这个接口,而底层模块去实现这个接口,从而使得高层模块不再依赖底层模块。

  • 真正的依赖倒置是说,这个接口是属于高层模块,高层模块定义的接口。高层模块定义一个接口,供底层模块来实现才是依赖倒置。

  • 框架的重要特点是框架去调用应用程序,而应用程序不会去调用框架,同时框架也不依赖于应用程序。例如, Tomcat, Spring, etc.



2.5 里氏替换原则

  • OOD 原则三:Liskov替换原则(LSP)

  • 对象的特征不在于它的状态,而在于它的行为。

  • 用组合代替继承

2.6 单一职责接口隔离

  • OOD 原则四:单一职责原则(SRP)

  • SRP - Single Responsibility Principle

  • 一个类只有一个引起它变化的原因

  • OOD原则五:接口分离原则(ISP)

  • ISP - Interface Segregation Principle

  • 不应该强迫客户程序依赖它们不需要的方法

  • 主要实现手段就是多重继承,一个实现类实现多个接口



《敏捷软件开发》Robert C. Martin

观点:对于一个软件开发而言,要想实现敏捷的软件开发,并不在于敏捷的软件过程保证,当然这些过程保证也很重要,重要的是设计本身是敏捷的。当我们有需求变更的时候,当我们要快速迭代的时候,这些设计能够快速的支撑我们进行变更和迭代,而不是耦合在一起,僵硬的依赖在那里。如果软件设计本身是僵硬的,脆弱的,粘滞的,是不可移植的,难以复用的,那么即使你有再好的软件过程保证,也难以实现一个敏捷的软件开发。



用户头像

netspecial

关注

还未添加个人签名 2011.07.20 加入

还未添加个人简介

评论

发布
暂无评论
架构师训练营第 2 周学习总结