六大设计模式
- 单一职责原则
一个类或者模块只负责完成一个职责。
- 里 氏 替 换 原 则
子类可以扩展父类的功能,但不能改变父类原有的功能。子类只能通过新添加方法来扩展功能。父类和子类都可以实例化,父类调用方法的地方,子类也可以调用同一个继承得来。
如果继承的目的是为了多态,应该将父类定义为抽象类,并定义抽象方法,让子类重新定义这些方法。因为父类是抽象类不能实例化,也就不存在子类替换父类实例。
- 依 赖 倒 置 原 则
下层模块引入上层模块的依赖,改变原有自上而下的依赖方向。
https://baike.baidu.com/item/%E4%BE%9D%E8%B5%96%E5%80%92%E7%BD%AE%E5%8E%9F%E5%88%99/6189149?fr=aladdin
- 接 口 隔 离 原 则
建立单一接口,不要建立臃肿庞大的接口。接口尽量细化,同时接口中的方法尽量少。
单一职责原则与接口隔离原则。
首先是业务逻辑层面,要先将业务划分好,所需要的每个模块的功能进行划分,尽量划分到一个功能模块仅有一个方法。
其次我们在定义类的时候也要再次考虑接口的定义是否有冗余,是否有可以再度拆分的可能,功能可否达到更简等。
通过两个层面的考虑,我们就可以最终敲定上层接口了。
- 迪 米 特 法 则 / 最 少 知 识 原 则
一个类应该对自己需要耦合或调用的类知道得最少
- 开 闭 原 则
类、方法、模块应该对扩展开放,对修改关闭。
添加一个功能应该是在已有的代码基础上进行扩展,而不是修改已有的代码。