美文网首页
面向对象设计中常见的设计原则

面向对象设计中常见的设计原则

作者: 凌枫望星月 | 来源:发表于2020-07-20 21:08 被阅读0次

单一职责原则

这个原则强调的是“当设计一个类时,该类就应该只负责一件事”。
一个类最好只负责一个功能的实现,但是具体的功能如何划分和归属呢?随着程序开发的进度不断深入,一个功能也可能增加新的子功能,单个类负责太多的功能实现,会导致类难以维护,也会使人难以了解类的主要功能,最后可能会导致:让整个项目都过度依赖这个类,让这个项目或者类失去弹性(不够灵活)。
通过不断的“类重构”,将类中与实现相关的功能的部分抽取出来,另外封装成新的类,之后再通过组合的方式加入到类中,就能慢慢符合类的单一职责化的要求,也就是项目中的每一个类只负责单一功能的实现。

举例

小明建了一个西瓜类,一开始只有西瓜的产地,品种,甜度等属性信息,后来随着项目的需要,又陆续为其添加了切西瓜,勺子舀西瓜,西瓜拼盘等不同吃法,这时最好将吃西瓜这个动作单独作为一个类抽象封装出来,让这个类加到原来的西瓜类中当一个成员或者属性,这样更容易维护。

开闭原则

这个原则强调的是“对扩展开放,对修改关闭”,意思就是说,如果你想加新功能,最好不要修改之前的类(除非是修正错误),而是设计时就将功能接口化,将一些类的操作方法向上提升,抽象化为接口,将功能的实现下移到子类中,有什么新功能增加子类就行了。

举例

小明的西瓜不仅要吃,还要喝,小明想增加西瓜汁的喝法,虽然按照单一职责原则可以创建一个喝西瓜的类,但是还是要把对象加到西瓜类里,才能关联起来,不妨为吃喝西瓜设置一个父类:享用西瓜类,让吃喝变为两个子类,让享用类与西瓜关联,这样以后再有什么西瓜的玩法,甚至做奥利给西瓜,都能直接添加子类了。

里氏替换原则

这个原则强调的是“子类必须能够替换父类”,父类通常是接口类或者可被继承的类,父类中一定包含了可被子类重新实现的方法,而客户端使用的操作接口当然也是走父类的接口函数,客户端不应该知道,自己使用的对象到底是哪个子类,这与开闭原则实际上是相向而行的。

举例

客户端弄到了一个好吃的大西瓜,这个西瓜内部带了一个勺子(关联的吃西瓜的子类是用勺子吃类),但是客户端不知道,客户端只知道自己要吃西瓜,但其实吃的时候顺其自然拿起了勺子。

依赖倒置原则

这个原则强调的是“高层模块不应该依赖于低层模块,两者都应该依赖于抽象概念。
以及“抽象接口不应该依赖实现,实现应该依赖抽象接口

一般来说,生活中有很多高层依赖低层的例子,例如组装汽车的时候,汽车的组建依赖各个低层模块的相互配合,加油的时候加什么种类的油自己说了不算,得引擎模块说了算,这就是依赖了低层模块。

而计算机规定,你只有正确规格的usb接口,才能连接到主机上,所以所有移动设备usb的连接线都遵循了这一个要求,而这次是计算机(高层模块)说了算,就属于依赖倒置了,同时实现也依赖了抽象接口。

接口隔离原则

这个原则强调的是“客户端不应该被迫使用他们用不到的接口方法。
当一个类负责主要功能,就会随着时间累积而增加许多接口方法,而客户端则必须小心翼翼的使用其中的方法,因此,必须通过一些方法减少不必要的接口方法出现在类中。

相关文章

  • 面向对象设计原则

    面向对象设计原则 面向对象设计原则是设计模式的基础,每个设计模式都符合一一种或多种面向对象的设计原则。 常用的面向...

  • 设计模式原则-开闭原则

    开闭原则(OCP)是面向对象设计中“可复用设计”的基石,是面向对象设计中最重要的原则之一,其它很多的设计原则都是实...

  • 01. Java设计模式的设计原则

    01. Java设计模式的设计原则 常见的7中面向对象设计原则 一、单一职责原则 一个类中负责一个功能领域中的相应...

  • 六大设计原则详解(6)-开闭原则

    简介: 开闭原则(OCP)是面向对象设计中“可复用设计”的基石,是面向对象设计中最重要的原则之一,其它很多的设计原...

  • 面向对象设计原则(二)开闭原则

    面向对象设计原则之开闭原则 开闭原则是面向对象的可复用设计的第一块基石,它是最重要的面向对象设计原则。 开闭原则的...

  • C#设计模式:六大原则(上)

      面向对象设计原则,是一种指导思想,在程序设计过程中,要尽量的去遵守这些原则,用于解决面向对象设计中的可维护性,...

  • 01-设计模式原则

    面向对象的设计原则 面向对象的设计原则也被称为SOLID。SOLID原则包括单一职责原则、开闭原则、里氏替换原则、...

  • 面向对象设计原则

    面向对象设计原则

  • Swift设计模式----目录

    面向对象设计原则: 开闭原则 单一职责原则 依赖倒置原则 接口分离原则 迪米特法则 里氏替换原则 面向对象设计模式...

  • 面向对象设计原则

    面向对象设计原则 面向对象设计原则概述[https://www.jianshu.com/p/57137d81c55...

网友评论

      本文标题:面向对象设计中常见的设计原则

      本文链接:https://www.haomeiwen.com/subject/heaykktx.html