架构师课程第二周总结
三个特性
封装:
和平常说的封装一下xxx不同,这里的封装指的是
明确类的行为、状态使用边界以及类的边界,主要解决的问题是类的安全使用问题
通过修饰符 明确类、变量、方法的作用范围,对外隐藏脆弱的代码。
对外隐藏代码,也意味着 内部代码改动不会影响到外部的使用。这也是封装带来的好处
继承
子类继承父类的行为和属性。使子类可以向上转型。
关于继承,有慎用继承的说法。主要是使用继承可能会破坏父类的结构。而父类的代码改动也有可能影响子类。
但这个还是看场景,对于行为已经固定的类,确实别用继承。但模型为了扩展而写得父类,也是需要用继承的。
总得来说,慎用继承还是在隔离人的因素
继承和实现
继承与实现的区别:继承面向的是事物,实现面向的是行为。所以在java中,类是单继承的,接口是多实现的。 行为可以多,但事物的所属祖先只能有一个。
多态
父类引用指向子类实现。 在编译期不指定具体的实现,运行期指向具体的子类对象。 主要作用还是解耦
五个原则
开闭原则
对修改关闭 对扩展开放。
个人理解 主流程的变化修改时必然的,但在主流程必然不变时,需要做到代码对变化逻辑的隔离。 隔离出变化的部分,留下扩展的口子。这个是很轻松能办到的
依赖倒置原则
高层模块不应该依赖低层模块,抽象不改依赖实现
关于倒置: 一种编码逻辑是明确具体的被调用方式谁,这里的倒置就是倒置被调用方,调用方调用抽象。 先抽象后细节,先主流程后细节
里氏替换原则
子类能代替基类
单一职责原则
类的职责要单一。 主要还是划分清楚类的行为边界
接口隔离原则
接口的单一职责描述
近期需要改进的
受源码影响比较多,所以平时喜欢过度去设计某些东西,去套用一些设计模式。最近也在尝试改变。其实好的代码就是 高内聚松耦合,编码的时候根据这里原则作为准则就行了
评论