当前位置: 首页 > news >正文

Java设计模式七大原则

本篇为七大原则概述,后面会有每个原则的介绍,喜欢的朋友可以蹲一下哦!!!!

Java设计模式的七大原则一般是指“面向对象设计原则”,这些原则有助于在设计软件系统时提高代码的可维护性、可扩展性和灵活性。以下是这七大原则

1. 单一职责原则 (Single Responsibility Principle, SRP)

一个类应该仅有一个原因引起变化,也就是说,一个类应该只有一个职责。

2. 开闭原则 (Open/Closed Principle, OCP)

软件实体(类、模块、函数等)应该对扩展开放,对修改关闭。这意味着在不改变现有代码的前提下,可以通过增加新代码来实现功能扩展。

3. 里氏替换原则 (Liskov Substitution Principle, LSP)

子类对象应该能够替代父类对象出现在任何地方,且程序的行为没有变化。即,子类应该能够完全替代父类,确保功能的一致性。

4. 接口隔离原则 (Interface Segregation Principle, ISP)

不应该强迫客户端依赖它不需要的接口。换句话说,应该保持接口的高内聚性,避免一个接口过于复杂或臃肿。

5. 依赖倒转原则 (Dependency Inversion Principle, DIP)

高层模块不应该依赖低层模块,二者都应该依赖于抽象;抽象不应该依赖于细节,细节应该依赖于抽象。这个原则提倡通过接口或抽象类来降低模块间的耦合度。

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

尽量使用合成的方式来实现复用,而不是通过继承。合成可以提高灵活性,降低类之间的耦合度。

7. 最少知识原则 (Law of Demeter, LoD)

一个对象应当对其他对象有尽可能少的了解。即,一个对象只应该和直接的朋友交互,而不应该对其他对象的内部实现细节有过多的了解。


 

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 开启仓颉编程
  • 网络编程:Posix API
  • windows C++-并发和异步操作(上)
  • 国标非对称加密:RSA算法、非对称特征、js还原、jsencrypt和rsa模块解析
  • 汇量科技Mintegral发布全新产品矩阵:助力广告主高效增长与变现
  • go-zero中基本配置及获取参数
  • django.core.management.base.SystemCheckError
  • 阿布吞的基础使用——Ubuntu
  • 格式化字符串漏洞
  • 基于Qt的osg读取模型进度回调
  • 数据结构:栈(含源码)
  • [QNX] C++编程: 外部硬件加速器与SOC共享内存中使用NOCACHE的必要性与优化策略
  • jQuery实现图片轮播效果
  • Redis相关面试题(二)
  • Go框架选战:Gin、Echo、Fiber的终极较量
  • 【剑指offer】让抽象问题具体化
  • 2018一半小结一波
  • Bytom交易说明(账户管理模式)
  • CAP 一致性协议及应用解析
  • css的样式优先级
  • echarts花样作死的坑
  • java B2B2C 源码多租户电子商城系统-Kafka基本使用介绍
  • JS变量作用域
  • overflow: hidden IE7无效
  • SpiderData 2019年2月25日 DApp数据排行榜
  • 不用申请服务号就可以开发微信支付/支付宝/QQ钱包支付!附:直接可用的代码+demo...
  • 从零到一:用Phaser.js写意地开发小游戏(Chapter 3 - 加载游戏资源)
  • 发布国内首个无服务器容器服务,运维效率从未如此高效
  • 海量大数据大屏分析展示一步到位:DataWorks数据服务+MaxCompute Lightning对接DataV最佳实践...
  • 那些年我们用过的显示性能指标
  • 前端技术周刊 2018-12-10:前端自动化测试
  • 浅谈web中前端模板引擎的使用
  • 想晋级高级工程师只知道表面是不够的!Git内部原理介绍
  • 用Canvas画一棵二叉树
  • 关于Android全面屏虚拟导航栏的适配总结
  • ​埃文科技受邀出席2024 “数据要素×”生态大会​
  • ​油烟净化器电源安全,保障健康餐饮生活
  • # Maven错误Error executing Maven
  • # 详解 JS 中的事件循环、宏/微任务、Primise对象、定时器函数,以及其在工作中的应用和注意事项
  • ###C语言程序设计-----C语言学习(3)#
  • ###项目技术发展史
  • #pragma multi_compile #pragma shader_feature
  • $().each和$.each的区别
  • (2024,Vision-LSTM,ViL,xLSTM,ViT,ViM,双向扫描)xLSTM 作为通用视觉骨干
  • (32位汇编 五)mov/add/sub/and/or/xor/not
  • (delphi11最新学习资料) Object Pascal 学习笔记---第7章第3节(封装和窗体)
  • (博弈 sg入门)kiki's game -- hdu -- 2147
  • (苍穹外卖)day03菜品管理
  • (二十四)Flask之flask-session组件
  • (附源码)php投票系统 毕业设计 121500
  • (附源码)springboot工单管理系统 毕业设计 964158
  • (蓝桥杯每日一题)love
  • (原創) 如何安裝Linux版本的Quartus II? (SOC) (Quartus II) (Linux) (RedHat) (VirtualBox)
  • (转载)OpenStack Hacker养成指南
  • *2 echo、printf、mkdir命令的应用