1. 设计原则
- 单一职责原则:一个对象或者一个方法只做一件事
- 能够降低实体的复杂度,便于维护和拓展
- 提高实体的可读性
- 改动代码的风险降低了,也不会牵一发而动全身
- 开闭原则:一个软件实体,如类、模块和函数应该对扩展开放,对修改关闭
- 不会改变原有功能,从而引发故障
- 里氏替换原则:所有引用基类的地方必须能透明地使用其子类的对象
- 为继承定义了规范,实现更好的继承
- 迪米特原则:如果两个软件实体无须直接通信,那么就不应当发生直接的相互调用,可以通过第三方转发该调用。
- 降低了类之间的耦合度,提高了模块的相对独立性。
- 由于耦合度降低,从而提高了类的可复用率和系统的扩展性。
- 过度使用会造成系统产生大量的中介类,从而增加系统的复杂度
- 接口隔离原则:客户端不应该依赖它不需要的接口、类间的依赖关系应该建立在最小的接口上
- 接口隔离提高了系统的内聚性,减少了对外交互,降低了系统的耦合性。
- 将臃肿庞大的接口分解为多个粒度小的接口,可以预防外来变更的扩散,提高系统的灵活性和可维护性。
- 能减少项目工程中的代码冗余
- 依赖倒置原则:上层模块不应该依赖底层模块,它们都应该依赖于抽象。抽象不应该依赖于细节,细节应该依赖于抽象。
- 降低模块之间的耦合,同时便于功能的扩展
2. 设计模式
2.1 创建型模式
2.1.1 简单工厂模式
将创建对象的过程使用对象工厂封装起来,从而屏蔽了产品实现的具体细节,实现了代码层面的解耦,还减少了代码量。
简单工厂模式为每种对象创建一个工厂,通过传入参数实现生产,但这在一定程度上还存在调度和被调用之间的耦合。
故事1:我来到4S店来买车,**我说:“老板,给我来辆奥迪”。老板去汽车厂里调了一台奥迪来了,我又说,来一辆宝马,老板又去宝马车厂里调了一台宝马来了。**我又准备说,老板说等等,我好累,让我歇会。
2.1.2 工厂方法模式
工厂方法模式将工厂抽象化,通过在生产工厂类时就指定创建的对象,进一步降低了耦合,形成工厂—产品
一一对应的模式,因此满足了“开放-封闭”原则。
故事2:老板嫌这样太麻烦了,每次都要我说他才去找人,老板说:小伙子你要啥车,我直接带你去汽车厂,你爱咋看咋看。就这样,我逛了两个汽车厂。