首页 > 其他分享 >OOP面向对象的七大设计原则

OOP面向对象的七大设计原则

时间:2022-09-19 12:34:46浏览次数:65  
标签:核心思想 原则 七大 复用 接口 面向对象 Principle 可维护性 OOP

 

一. 开闭原则 OCP(Open-Closed Principle)

核心思想:对扩展开发,对修改关闭。

好处:可以提高代码的可复用性。可以提高代码的可维护性。

 

二.里氏代换原则 LSP(Liskov Substitution Principle)

核心思想:继承必须确保超类所拥有的性质在子类中仍然成立。在任何父类出现的地方子类都可以替换。

好处:克服了继承中重写父类造成的可复用性变差的问题。

  

三. 依赖倒置原则 DIP(Dependency Inversion Principle)
核心思想:要面向接口编程,不要面向实现编程。降低各个对象之间的耦合,提高系统的可维护性。

好处:降低类之间的耦合性。提高系统的稳定性。减少并行开发引起的风险。提高代码的可读性和可维护性。

 

四. 单一职责原则 SRP(Single Resposibility Principle)

核心思想:一个类应该有且仅有一个引起它变化的原因,否则类应该被拆分。

也就是说每个类应该只有一个职责,对外提供一种职能,而引起类变化的原因应该只有一个。

好处:降低类的复杂度。一个类只负责一项职责,其逻辑肯定要比负责多项职责简单得多。

五.接口隔离原则 ISP(Interface Insolation Principle)

核心思想:一个接口不需要提供太多的行为,一个接口应该只提供一种对外的功能,不应该把所有的操作都封装到一个接口中。

好处:提高系统的灵活性和可维护性。接口隔离提高了系统的内聚性,减少了对外交互,降低了系统的耦合性。

 

六.迪米特法则 LoD(Law Of Demeter or Principle of Least Knowledge)
核心思想:一个类对于其他类知道的越少越好,就是说一个对象应当对其他对象有尽可能少的了解,只和朋友通信,不和陌生人说话。

好处:降低了类之间的耦合度,提高了模块的相对独立性。由于亲合度降低,从而提高了类的可复用率和系统的扩展性。

 

七.合成复用原则 CRP(Composite Reuse Principle)

核心思想:复用时,要尽量先使用组合或者聚合等关联关系来实现,其次才考虑使用继承关系来实现。

好处:通常类的复用分为继承复用和合成复用两种。继承复用虽然简单易实现。新旧类之间的耦合度低。复用的灵活性高。

 

八.总结-各种原则要求的侧重点不同:

开闭原则:对扩展开放,对修改关闭。

里氏替换原则:不要破坏继承体系。

依赖倒置原则:要面向接口编程。

单一职责原则:实现类要职责单一。

接口隔离原则:设计接口的时候要精简单一。

迪米特法则:要降低耦合度。

合成复用原则:要优先使用组合或者聚合关系复用,少用继承关系复用。

 

--学无止境,爱拼才会赢

标签:核心思想,原则,七大,复用,接口,面向对象,Principle,可维护性,OOP
From: https://www.cnblogs.com/xinloverong/p/16707260.html

相关文章

  • 别给计算机科学学生教面向对象编程
    面向对象理念是编程时入手问题的一种人类理解意义上的“具象”,在性能关键的领域(科学计算、图形渲染、大数据处理等)这种“具象”所建立起来的计算模型十有八九不是计算效率......
  • jaca-面向对象三大特征
    面向对象编程的三大特征:继承、封装、多态继承  继承是面向对象编程的三大特征之一。继承让我们更加容易实现类的扩展。实现代码的重用,不用再重新发明轮子(don’treinv......
  • 第04周 预习:面向对象设计、继承与Object
    1,为什么说Java中的所有类都is-aObject?Object类是所有类的始祖,Java中的每一个类都扩展了Object.2,一,在JDK文档中查找Object的toString方法。说一说,该方法有什么用?-->t......
  • 面向对象---接口
    JDK1.8之前packagecom.gao.test.Test7;/*1.类是类,接口是接口,他们是同一层次的概念。2.接口中没有构造器3.接口如何声明:interface4.在JDK1.8之前,接口中只有两部分内......
  • Python面向对象+unittest框架(存档)
    面向对象基本的介绍面向对象是一个编程思想(写代码的套路)编程思想:1.面向过程2.面向对象以上两种都属于写代码的套路(方法),最终目的都是为了将代码书写出来,只不过过......
  • EventLoop中的async和await
    直接先来看一道题:asyncfunctionasync1(){console.log('async1start')awaitasync2()console.log('async1end')}asyncfunctionasync2(){console.lo......
  • 面向对象编程 (OOP):您需要知道的一切
    面向对象编程(OOP):您需要知道的一切面向对象编程(OOP),编程中最有趣的话题之一,它有很多优势程序化编程。我们还将讨论OOP中的一些重要方法,它们是封装、继承、多态、抽......
  • 面向对象-什么是继承
           ......
  • 5.JS面向对象编程
    5.面向对象编程5.1原型对象JavaScript,java,c#。。。。类:模板对象:具体的实例原型: varuser={   name:"cc",   age:3,   sex:'男',   run:f......
  • 11.5面向对象的三大特性
    #面向对象三大特性:封装继承多态#广义得封装:#把方法和变量都封装在类中#比如人狗大战#规范创建对象#创建所有人得属性名都能一致#......