首页 > 编程语言 >Java--面向对象设计原则

Java--面向对象设计原则

时间:2024-09-09 14:05:03浏览次数:6  
标签:依赖 Java 职责 -- 接口 面向对象 抽象 父类 方法

衡量软件设计质量(高内聚,低耦合)
  • 可读性

  • 可复用性 (继承,封装)

  • 可扩展性

  • 可维护性 (更好定位bug,日志)

  • 可测试性

单一职责原则(SRP)

不要存在多于一个导致类变更的原因。通俗的说,即一个类只负责一项职责。
问题由来:类T负责两个不同的职责:职责P1,职责P2。当由于职责P1需求发生改变而需要修改类T时,有可能会导致原本运行正常的职责P2功能发生故障。
一句话总结:不能为图代码量少,把牛头马嘴一起往一个类塞

里氏替换原则(LSP)

1.子类可以实现父类的抽象方法,但不能覆盖父类的非抽象方法。
2.子类中可以增加自己特有的方法。
3.当子类的方法重载父类的方法时,方法的前置条件(即方法的形参)要比父类方法的输入参数更宽松。
4.当子类的方法实现父类的抽象方法时,方法的后置条件(即方法的返回值)要比父类更严格。
一句话总结:尽量不要重写父类的已经实现了的方法,可以用接口等其他方法绕过

依赖倒置原则(DIP)

高层模块不应该依赖低层模块,二者都应该依赖其抽象;抽象不应该依赖细节;细节应该依赖抽象。
一句话总结:多用抽象的接口来描述相同的动作,降低实现这个动作的人和物之间的耦合度

接口隔离原则(ISP)

客户端不应该依赖它不需要的接口;一个类对另一个类的依赖应该建立在最小的接口上。
问题由来:类A通过接口I依赖类B,类C通过接口I依赖类D,如果接口I对于类A和类B来说不是最小接口,则类B和类D必须去实现他们不需要的方法。
一句话总结:就好比鱼和人两个类,鱼是游泳和腮呼吸两个动作,人是走路和吃饭两个动作,这些动作不能写在一个接口里面,把这四个动作都包含了。要拆成专门对鱼和人的两个接口才行。

迪米特法则(LKP)

迪米特法则又叫最少知道原则,最早是在1987年由美国Northeastern University的Ian Holland提出。通俗的来讲,就是一个类对自己依赖的类知道的越少越好。也就是说,对于被依赖的类来说,无论逻辑多么复杂,都尽量地的将逻辑封装在类的内部,对外除了提供的public方法,不对外泄漏任何信息。
一句话总结:father1<-child1,father2<-child2,father1和father2是的手下, father1尽量通过father2去访问child2, 不要直接在类里面访问child2. 下属怎么能随便去领导家的孩子呢,小心别人说你拐卖

开闭原则(OCP)

一句话总结:尽量通过扩展软件实体的行为来实现变化,而不是通过修改已有的代码来实现变化

标签:依赖,Java,职责,--,接口,面向对象,抽象,父类,方法
From: https://www.cnblogs.com/yangcurry/p/18404413

相关文章

  • tarjan—算法的神(一)cw
    本篇包含tarjan求强连通分量、边双连通分量、割点部分,tarjan求点双连通分量、桥(割边)在下一篇。伟大的RobertTarjan创造了众多被人们所熟知的算法及数据结构,最著名的如:(本文的)连通性相关的tarjan算法,Splay-Tree,Toptree,tarjan求lca等等。注:有向图的强连通分量、无向......
  • Docker 知识梳理及其安装使用EE
    目录Docker介绍为什么Docker很受欢迎?Docker的关键组件Docker架构以及Docker的工作原理?DockerDaemonDockerClientDockerHostDockerRegistryDockerObjectsDockerImagesDockerContainersDockerStorageDocker网络Docker安装方式准备环境在线YU......
  • Cloudflare D1 - 免费数据存储
    前言自从上次将博客项目的图片从七牛云迁到了CloudflareR2之后就发现,Cloudflare这个赛博菩萨的产品是真的不错,非常的适合白嫖,DevNow项目作为一个开源博客,整体来说是希望越少依赖一些服务越好,使整个构建、部署流程更加的轻便和快捷,让对于前端不是很熟的同学也能快速的......
  • Java--设计模式
    目录23种设计模式创建型模式结构型模式行为型模式设计模式的本质单例模式工厂模式定义解耦(对象使用过程+对象创建过程)分类简单工厂模式代理模式适配器模式外观模式策略模式23种设计模式创建型模式工厂模式(FactoryPattern)抽象工厂模式(AbstractFactoryPattern)单例模式(S......
  • SciTech-Mathmatics-Probability+Statistics-Population-Sampling of Region of Popul
    SciTech-Mathmatics-Probability+Statistics-Population-Sample:SampleProportionvs.SampleMean:TheDifferenceSampleProportionvs.SampleMean:TheDifferenceBYZACHBOBBITTPOSTEDONMAY5,2021TwotermsthatareoftenusedinstatisticsareSamplePr......
  • 程序安装:不会安装该公布程序,因为它可能不安全,请与管理员联系解决办法
    程序安装:不会安装该公布程序,因为它可能不安全,请与管理员联系解决办法删除注册表中Products下的项。该方法确实能解决问题,但为防止误删其他软件注册信息,将此法作如下改进,发现依然好使:将注册表中HKEY_CURRENT_USER\Software\Microsoft\Installer\Products下的所有子项全......
  • CheckNetIsolation介绍
    CheckNetIsolation是Windows操作系统中的一个命令行工具,用于管理UWP应用(UniversalWindowsPlatform,通用Windows平台应用)的网络隔离设置。该工具主要用于配置应用程序是否允许访问本地网络资源(如本地回环地址127.0.0.1),并排查与网络相关的问题。UWP应用由于其安全架构,默认......
  • 解锁高效驱动密码:SiLM8260A系列SiLM8260ABCS-DG 集成米勒钳位的双通道隔离驱动芯片
    附上SiLM8260A同系列型号参考:SiLM8260ADCS-DG 12.5V/11.5VSiLM8260ABCS-DG 8.5V/7.5VSiLM8260AACS-DG 5.5V/5VSiLM8260AGCS-DG 3.5V/3VSiLM8260ABCS-DG是一款集成了米勒钳位功能的双通道隔离驱动芯片,它精准地满足了上述严苛条件。具备10A的拉电流和灌电流能......
  • 工业以太网无线网桥
    设备简介    本产品是工业以太网(Profinet、EtherNet/IP、ModbusTCP等)转无线设备,一个AP最多可以配8个STA,AP和STA以及STA和STA之间可以互相通讯,用户使用之前需要进行手动配对。    本产品适用于用户布线不方便的场景。......
  • 系统架构师考试学习笔记第三篇——架构设计高级知识(20)通信系统架构设计理论与实践
    本章知识考点:        第20课时主要学习通信系统架构设计的理论和工作中的实践。根据新版考试大纲,本课时知识点会涉及案例分析题(25分),而在历年考试中,案例题对该部分内容的考查并不多,虽在综合知识选择题目中经常考查,但分值也不高。本课时内容侧重于对知识点的记忆......