设计模式之七大软件设计原则

(1).开闭原则:
对修改关闭,对扩展开放。相对于以往代码,在进行逻辑更改和变动时候需要对底层代码逻辑进行修改,当产品和项目进行长期迭代后这种频繁操作会对线上测试和版本稳定造成非常大的影响,故保持开闭原则会大大减少代码修改对其他系统造成的影响。
(2)单一职责:
每个接口和方法只做一件事,在代码逻辑中尽量保持每个类只做一件事情,避免出现批量的if else判断,每次追加都要修改代码,和开闭原则有点相互对应。但一味追求单一职责会导致代码的类过多,在设计当中应按需求和场景进行判断。
(3)依赖倒置原则:
,通过抽象各个模块,让相互模块互不影响,实现松耦合,面向抽象编程,面向接口编程。 高层不应依赖底层,抽象不依赖于细节,但细节和顶层都要依赖于抽象。
(4)接口隔离原则:
,面向抽象编程之上尽量确保接口的纯洁性,接口要单一,只干一类事情,不要依赖不需要的接口.例如Animal类中有eat run fly等方法,当dog和bird实现接口时候就会出问题,dog不会fly ,bird不会run.那么显然有些方法是冗余的,我们需要将Animal换成 runAinimal flyAnimal等让dog和bird选择自己适合的接口即可。实现接口隔离。
(5)迪米特法则:
,最少知道原则,一个类对一个依赖的类知道越少越好,提高代码的可读性,例如老板想找人打扫房间,肯定不能自己打扫,一般都是联系物业经理,然后由物业经理来找保洁员打扫办公室。老板不用保留保洁员和服务员电话,只要将需求交付给物业经理再由物业经理统一分配任务。
(6)里式替换原则:
,子类可以拓展父类的功能,但是不能更改父类的原有功能。杜绝”继承泛滥”。并且子类的扩展参数要比父类要宽泛,返回类型要比父类更具体更收紧,从而能实现子类可以完全替换父类。
(7)合成复用原则:
,尽量使用对象组合(contains-a) 和聚合(has-a),少用继承(is-a).和依赖倒置原则有点呼应的意思。组合概念相当于人和手脚的关系,如果缺少会缺少生命周期。聚合相当于电脑和U盘,只有在一起的时候才会合作,但同时也能作为独立的个体。继承相当于狗狗和动物之间的关系,两者是属关系。

你可能感兴趣的:(设计模式和设计原则)