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

Java中的设计模式违反了哪些设计原则

设计原则

设计原则名称

简单定义

开闭原则

对扩展开放,对修改关闭

单一职责原则

一个类只负责一个功能领域中的相应职责

里氏替换原则

子类应该能够替换父类并且不影响程序的正确性

依赖倒置原则

依赖于抽象,不能依赖于具体实现

接口隔离原则

类之间的依赖关系应该建立在最小的接口上

合成 / 聚合复用原则

尽量使用合成 / 聚合,而不是通过继承达到复用的目的

迪米特法则

一个软件实体应当尽可能少的与其他实体发生相互作用


XX模式违反了XX原则

1.单例模式(Singleton Pattern)

违反的原则单一职责原则(SRP)

原因

单例模式通常将对象的创建和管理职责与业务逻辑耦合在一起,导致类承担了多个职责

这违反了单一职责原则,即一个类应该只有一个引起它变化的原因


2. 工厂模式(Factory Pattern)

违反的原则开闭原则(OCP)

原因

工厂模式虽然提供了扩展性,但在某些情况下,添加新的产品类型可能需要修改工厂类,而不是通过扩展来实现

这违反了开闭原则,即软件实体应该对扩展开放,对修改关闭


3. 适配器模式(Adapter Pattern)

违反的原则接口隔离原则(ISP)

原因

适配器模式可能会引入一个“胖接口”,即一个接口包含多个不相关的方法

这违反了接口隔离原则,即客户端不应该依赖于它们不需要的接口


4. 装饰器模式(Decorator Pattern)

违反的原则单一职责原则(SRP)

原因

装饰器模式通过动态添加职责来扩展对象的功能,这可能导致一个类承担过多的职责,违反了单一职责原则


5. 观察者模式(Observer Pattern)

违反的原则依赖倒置原则(DIP)

原因

观察者模式中,观察者通常依赖于具体主题(Subject)的实现,而不是依赖于抽象

这违反了依赖倒置原则,即高层模块不应该依赖于低层模块,二者都应该依赖于抽象


6. 模板方法模式(Template Method Pattern)

违反的原则里氏替换原则(LSP)

原因

模板方法模式通过继承来实现算法的骨架,子类必须遵循父类的行为

如果子类不正确地覆盖了父类的方法,可能会导致程序行为异常,违反了里氏替换原则,即子类应该能够替换父类并且不影响程序的正确性


7. 策略模式(Strategy Pattern)

违反的原则单一职责原则(SRP)

原因

策略模式将算法的选择与使用算法的类分离,但可能会导致使用策略的类承担了过多的职责,违反了单一职责原则


8. 代理模式(Proxy Pattern)

违反的原则单一职责原则(SRP)

原因

代理模式可能会将访问控制、延迟初始化等职责与业务逻辑耦合在一起

导致代理类承担了多个职责,违反了单一职责原则

相关文章:

  • React基础之渲染操作
  • “双碳”背景下,企业应该如何提升能源效率?
  • Vue3路由组件和一般组件 切换路由时组件挂载和卸载 路由的工作模式
  • Nginx如何实现 TCP和UDP代理?
  • 选择排序算法的分析
  • Jenkins在Windows上的使用(一):用户配置
  • 计算机毕业设计SpringBoot+Vue.js美食烹饪互动平台(源码+文档+PPT+讲解)
  • C# CompareTo Compare 方法使用详解
  • Python-列表和元组
  • docker 如何更新容器内的环境变量,并覆盖创建这个容器的镜像?
  • 【工具类】Springboot 项目日志打印项目版本和构建时间
  • C++学习(十)(标准,C++11 和 C++14,C++17,C++20)
  • Linux 进程管理工具 Supervisor
  • 【线程与进程的区别和联系】
  • 深度学习驱动的跨行业智能化革命:技术突破与实践创新
  • im即时聊天客服系统SaaS还是私有化部署:成本、安全与定制化的权衡策略
  • linux-git
  • 设计模式--单例模式(Singleton)【C++】
  • Celia智能助手系统架构设计与技术实现全解析
  • MobileMamba: Lightweight Multi-Receptive Visual Mamba Network——论文笔记
  • 企业网站模板 下载 论坛/友情链接教程
  • b2c平台特点/seo长尾关键词
  • 网站设计介绍/seo五大经验分享
  • 网站建设与网站主机的选择/百度网站介绍
  • 做调查哪个网站比较可靠/seo的定义
  • 做个网站要钱吗/论坛seo教程