专业IT网络知识平台,分享IT百科知识、生活百科知识解答!

易企推科技
易企推科技

面向对象设计原则有哪些(常用六大面向对象设计原则介绍)

来源:小易整编  作者:小易  发布时间:2023-02-16 06:31
摘要:面向对象设计原则有哪些(常用的六大面向对象设计原则介绍)面向对象设计原则:,单一职责原则、开放关闭原则、里式替换原则、依赖倒置原则、接口隔离原则、迪米特法则、组合复用原则;...

面向对象设计原则有哪些(常用的六大面向对象设计原则介绍)

面向对象设计原则概述

在面向对象的软件设计中,只有尽量降低各个模块之间的耦合度,才能提高代码的复用率,系统的可维护性、可扩展性才能提高。面向对象的软件设计中,有23种经典的设计模式,是一套前人代码设计经验的总结,如果把设计模式比作武功招式,那么设计原则就好比是内功心法。常用的设计原则有七个,下文将具体介绍。

面向对象设计原则有哪些(常用的六大面向对象设计原则介绍)

设计原则简介

  • 单一职责原则: 专注降低类的复杂度,实现类要职责单一;

  • 开放关闭原则: 所有面向对象原则的核心,设计要对扩展开发,对修改关闭;

  • 里式替换原则: 实现开放关闭原则的重要方式之一,设计不要破坏继承关系;

  • 依赖倒置原则: 系统抽象化的具体实现,要求面向接口编程,是面向对象设计的主要实现机制之一;

  • 接口隔离原则: 要求接口的方法尽量少,接口尽量细化;

  • 迪米特法则: 降低系统的耦合度,使一个模块的修改尽量少的影响其他模块,扩展会相对容易;

  • 组合复用原则: 在软件设计中,尽量使用组合/聚合而不是继承达到代码复用的目的。

这些设计原则并不说我们一定要遵循他们来进行设计,而是根据我们的实际情况去怎么去选择使用他们,来让我们的程序做的更加的完善。

面向对象设计原则有哪些(常用的六大面向对象设计原则介绍)

里式替换原则

定义 :

如果对每一个类型为T1的对象o1,都有类型为T2的对象o2,使得以T1定义的所有程序P在所有的对象o1都代换成o2 时,程序P的行为没有发生变化,那么类型 T2 是类型 T1 的子类型。

换句话来说,一个软件实体如果使用一个基类的话,那么一定适用于其子类,而且它根本不会察觉出基类对象和子类对象的区别。

比如说,假设有两个类,一个是Base类,另一个是Derived类,并且Derived类是Base的子类,那么一个方法如果可以接受一个基类对象b的话: method(Base b) ,那么它必然可以接受一个子类对象d,可以有 method1(d)

里式替换原则是继承复用的基石,只有当衍生类可以替换掉基类,软件单位的功能不会受到影响的时候,基类才能真正被复用,而衍生类也才能够在基类的基础上增加新的行为。

我们通过一个例子来理解一下:

《西游记》中,美猴王下地府桥段,个位应该有印象把,到达阎王殿之后,拿到生死簿,把生死簿上所有的包括自己,还有其他的猕猴,所有的猴子猴算都给划了,这也是导致之后真假美猴王桥段的前序。

画个图理解

面向对象设计原则有哪些(常用的六大面向对象设计原则介绍)

很显然,地府管理一切生灵的生死的方法都是通过类来进行区分的,比如孙悟空就是石猴,之后出现的那个六耳猕猴就是猕猴,但是他们都是属于同一个类,猴类,就像下图中。

面向对象设计原则有哪些(常用的六大面向对象设计原则介绍)

因此,孙悟空把猴类中有姓名的都从生死簿勾掉之后,显然是因为勾魂小鬼们并不区分石猴类与猕猴类,就像下图:

面向对象设计原则有哪些(常用的六大面向对象设计原则介绍)


本文地址:网络知识频道 https://www.hkm168.com/jiqiao/903083.html,易企推百科一个免费的知识分享平台,本站部分文章来网络分享,本着互联网分享的精神,如有涉及到您的权益,请联系我们删除,谢谢!


网络知识
小编:小易整编
相关文章相关阅读
  • 什么是结构化程序设计

    什么是结构化程序设计

    结构化程序设计是一种使程序更加清晰、易于理解和维护的编程方法论。通过将程序划分为不同的模块,并使用控制结构来组织这些模块,结构化程序设计使程序的开发和维护更加高效和可靠,无论是初学者还是有经验的开发者,都应该掌握结构化程序设计的基本原理和技...

  • javascript中的设计模式有哪些

    javascript中的设计模式有哪些

    javascript中的设计模式有:单例模式、策略模式、代理模式、迭代器模式、“发布-订阅”模式、命令模式、组合模式、模板方法模式、享元模式、职责链模式、中介者模式、装饰者模式、状态模式、适配器模式、外观模式等。本教程操作环境:window...

  • 在线投票系统的设计与实现

    在线投票系统的设计与实现

    在线投票系统的设计与实现随着互联网的不断发展,在线投票系统成为了一种非常方便和高效的方式来进行民意调查和选举。本文将介绍在线投票系统的设计和实现,并附带一些代码示例。一、系统设计功能需求分析在线投票系统主要具备以下功能:用户注册与登录:用户...

  • UI设计主要学什么?

    UI设计主要学什么?

    ui设计是指对软件的人机交互、操作逻辑、界面美观的整体设计;ui设计中文名字叫:用户界面设计。ui设计作为时下热门高薪职业之一,其发展前景不言而喻,应用领域非常广泛,那么ui设计都需要学习什么呢?下面本篇文章就来给大家介绍一下,希望对你们有...

  • Mysql索引的最左前缀原则是什么

    Mysql索引的最左前缀原则是什么

    前言之所以有这个最左前缀索引归根结底是mysql的数据库结构B+树在实际问题中比如索引index(a,b,c)有三个字段,使用查询语句select*fromtablewherec='1',sql语句不会走index索引...

  • ux设计是什么

    ux设计是什么

    ux,指的是用户体验。一般而言国内ux设计师也称为交互设计师或ue设计师。ux设计师是设计人与信息产品的流程和关系,归根结底都要研究人、事、物的联系,它是一个囊括计算机工程、心理学、设计的交叉学科。本教程操作环境:windows7系统、De...

  • Java 中的架构模式和领域驱动设计技术

    Java 中的架构模式和领域驱动设计技术

    java是当前使用最广泛的编程语言之一,它不仅具有面向对象的特性,同时也提供了许多强大的架构模式和设计技术,其中领域驱动设计(domain-drivendesign,ddd)是一个非常流行的技术,并且在实际开发中有广泛的应用。本文将...

  • CSS网页背景图设计:创建各种背景图样式和效果

    CSS网页背景图设计:创建各种背景图样式和效果

    CSS网页背景图设计:创建各种背景图样式和效果,需要具体代码示例摘要:在网页设计中,背景图是一种重要的视觉元素,它可以有效地增强页面的吸引力和可读性。本文将介绍一些常见的CSS背景图设计样式和效果,并提供相应的代码示例。读者可以根据自己的需...

  • 周排行
  • 月排行
  • 年排行

精彩推荐