1.内存模型:可以看看 继承与多态 的内存模型
2.模式设计原则:
#1:依赖倒置原则
- 高层模块不应该依赖底层模块,二者应该都依赖抽象;
- 抽象不应该依赖具体实现,具体实现应该依赖抽象;
自动驾驶系统公司是高层,汽车生产厂商是底层,它们不应该相互依赖,一方变动另一方也会跟着变动;而应该抽象一个自动驾驶行业标准,高层和底层都依赖它;这样以来解耦了两方的变动;自动驾驶系统和汽车生产厂都是具体实习,它们都应该依赖自动驾驶行业标准(抽象)
#2.开放封闭原则
- 一个类应该对外扩展开放,对修改关闭
#3.面向接口编程
- 不将变量类型声明为某个特定的具体类,而是声明为某个接口
- 客户程序无需获知对象的具体类型,只需要知道对象所具有的接口。
- 减少系统中各部分的依赖关系,从而实现高内聚、松耦合的类型设计方案。
#4.封装变化点
- 将稳定点和变化点分离,扩展修改变化点,让稳定点与变化点的实现层次分离;
#5.单一职责原则
- 一个类应该仅有一个引起它变化的原因;
#6.里氏替换原则
- 子类型必须能够替换掉它的父类型;主要出现在子类覆盖父类实现,原来使用父类型的程序可能出现错误;覆盖了父类方法却没实现父类方法的职责;
#7.接口隔离原则
- 不应该强迫客户依赖它们不用的方法
- 一般用于处理一个类拥有比较多的接口,而这些接口涉及到很多职责;
#8对象组合优于类继承
- 继承耦合度高,组合耦合度低;
一.单例模式
二、简单工厂 Simple Factory
三、工厂方法
四、抽象工厂
五、代理模式
六、装饰器模式 Decorator
7.适配器模式:让不兼容的接口可以在一起工作
8.观察者-监听者(发布订阅模式)模式