首页 > 其他分享 >面向对象设计原则

面向对象设计原则

时间:2024-08-15 20:04:51浏览次数:9  
标签:依赖 职责 原则 接口 面向对象 抽象 设计 父类 方法

面向对象设计原则总结

单一职责原则(SRP)

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

里氏替换原则(LSP)

  • 子类可以实现父类的抽象方法,但不能覆盖父类的非抽象方法。

  • 子类中可以增加自己特有的方法。

  • 当子类的方法重载父类的方法时,方法的前置条件(即方法的形参)要比父类方法的输入参数更宽松。

  • 当子类的方法实现父类的抽象方法时,方法的后置条件(即方法的返回值)要比父类更严格。

    一句话总结:尽量不要重写父类的已经实现了的方法,可以用接口等其他方法绕过

依赖倒置原则(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)

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

标签:依赖,职责,原则,接口,面向对象,抽象,设计,父类,方法
From: https://www.cnblogs.com/luoyiwen123/p/18361732

相关文章

  • 定制计算机专业软件工程毕业设计毕设代做一般多少钱?
    好多人咨询我,定制计算机专业软件工程毕业设计毕设代做一般多少钱?答:计算机专业的毕业设计服务,定制其定价至少为1000元,这一费用设定有其合理依据。此类设计项目不仅涵盖了撰写毕业论文的学术要求,还深度涉及了程序设计与实现,是对学生专业知识、实践能力及创新能力的全面考验。毕......
  • 基于SSM框架的短视频网站的设计与实现
    随着科学技术的发展,人们对服务的要求也越来越高。为了能提高管理者的管理效能,现在的短视频网站管理必须要脱离复杂的手工管理方式。随着信息化时代的到来,智能操作系统成为短视频网站的重要组成部分,为用户提供优质的服务。该系统采用Java编程语言,采用开放源码系统结构SSM完成......
  • 1289、仿真-51单片机垃圾分类处理电机控制手自动模式蜂鸣器报警设计
    毕设帮助、开题指导、技术解答(有偿)见文末。目录一、设计功能二、Proteus仿真三、程序源码四、资料包括一、设计功能1、单片机型号:STC89C52/51、AT89C52/51、AT89S52/51都可通用。2、分为手动模式和自动模式,通过按键“模式”切换。 3、当在手动模式下,按下......
  • 蓝桥杯2016 C/C++程序设计 B组
    抽签//X星球要派出一个5人组成的观察团前往W星。//其中://A国最多可以派出4人。//B国最多可以派出2人。//C国最多可以派出2人。//....//那么最终派往W星的观察团会有多少种国别的不同组合呢?//下面的程序解决了这个问题。//数组a[]中既是每个国家可以派出的最多的名......
  • BM100 设计LRU缓存结构
    1.题目描述设计LRU(最近最少使用)缓存结构,该结构在构造时确定大小,假设大小为capacity,操作次数是n,并有如下功能:1.Solution(intcapacity)以正整数作为容量capacity初始化LRU缓存2.get(key):如果关键字key存在于缓存中,则返回key对应的value值,否则返回-1。3.......
  • 设计模式实战:内容管理系统的设计与实现
    系统功能需求内容创建:支持多种内容类型的创建,如文章、页面、媒体等。内容管理:提供灵活的管理策略,如按时间发布、按用户分组显示等。内容发布:根据不同的策略发布内容,如即时发布、定时发布等。设计分析建造者模式建造者模式用于创建复杂对象,通过逐步构建内容对象的各......
  • 003springboot图书个性化推荐系统的设计与实现———源码+数据库文件+万字文档+配套PP
     博主介绍:java高级开发,从事互联网行业六年,熟悉各种主流语言,精通java、python、php、爬虫、web开发,已经做了六年的毕业设计程序开发,开发过上千套毕业设计程序,没有什么华丽的语言,只有实实在在的写点程序。......
  • 国产FPGA/CPLD芯片设计企业
    1、紫光同创 紫光同创是紫光集团旗下紫光国威的子公司。成立于2013年,具备大规模fpga工艺开发设计能力。布局涵盖高、中、低端fpga产品。半导体曾被台媒称为“国产fpg三驾马车”。2015年紫光同创成功推出国内拥有数千万门自主知识产权的高性能fpga芯片tin系列;2019年10月,紫光......
  • 设计模式(单例模式)
    概念单例模式(SingletonPattern)是指确保一个类在一个容器下只有一个实例存在,并提供一个全局访问点。单例模式最大的特点就是构造方法私有化。通常情况下,可以让一个全局变量使得一个对象被访问,但它不能防止你实例化多个对象。一个最好的方法就是让类自身负责保存它的唯一实例。......
  • 面试官:JDK中都用了哪些设计模式?
    设计模式是前辈们经过实践验证总结的解决方案,帮助我们构建出更具可维护性、可扩展性和可读性的代码。当然,在面试的过程中,也会或多或少的被问到。那么今天,我们就来看一道设计模式中的常见面试问题:JDK中都用了哪些设计模式?我按照大家比较熟悉且好理解的方式,把JDK中使用的设计模......