开闭原则(对修改封闭,对扩展开放)
解决问题的关键在于抽象化。在面向对象编程里面可以给系统定义出一个不再更改的抽象设计(JAVA的抽象类或JAVA接口规定出所有具体类必须提供的方法的特征),这个抽象层预见了所有的可能扩展(理想状态),这使得这个抽象层不需要修改。从而满足了"开-闭"原则的第一条“对修改关闭”。
同时,由于抽象层导出一个或多个新的具体类可以改变系统的行为,因此系统设计对扩展是开放的,这就满足了"开-闭"原则的第二条“对扩展开放”。
开闭原则从另一个角度描述就是“对可变性的封装”。对可变性的封装意味这两点:
(1)一种可变性不应当散落在代码的很多角落里,而应当被封装到一个对象里面。
(2)一种可变性不应当与另一种可变性混合在一起。
开闭原则的手段和工具
里氏代换原则:任何基类可以出现的地方,子类一定可以出现。它是对实现抽象化的具体步骤的规范。
依赖倒转原则:要依赖抽象,不要依赖于具体。即:针对接口和抽象类编程不针对实现编程。
合成/聚合复用原则:要尽量使用合成/聚合,尽量不要使用继承。
合成:当一个A类型的对象销毁了存储单元时,b引用的对象也销毁存储单元。换句话说,b引用的对象的存在依赖于A类型的对象。
聚合:当一个A类型的对象销毁了存储单元时,b引用的对象并没有销毁存储单元。换句话说,b引用的对象独立于于A类型的对象。
迪米特法则:如果两个类不必彼此直接通信,那么这两个类就不应当发生直接的相互作用
接口隔离原则:使用多个专门的接口比使用单一的总接口要好,一个类对另外一个类的依赖性应当是建立在最小的接口上的。注意:不要接口污染(使接口过于臃肿)
分享到:
相关推荐
学生读书笔记共享-学生读书笔记共享系统的设计与实现代码-java-springboot-基于springboot的学生读书笔记共享系统项目-代码-源码-项目-系统-毕设-网站 1、技术栈:java,springboot,vue,ajax,maven,mysql,...
学生读书笔记共享系统的设计与实现代码-java-springboot-基于springboot的学生读书笔记共享系统项目-代码-源码-项目-系统-毕设-网站 1、技术栈:java,springboot,vue,ajax,maven,mysql,MyBatisPlus等 2、系统的...
读书笔记:尚硅谷Java设计模式图解+框架源码剖析学习笔记
Java设计模式是软件开发中的重要概念,它是一种在特定情境下解决常见问题的经验总结,能够提升代码的可读性、可维护性和复用性。本资料包“java设计模式源码和笔记(第一部分)”提供了对Java设计模式的深入理解和...
java-springboot-基于springboot的学生读书笔记共享系统项目-代码-源码-项目-系统-毕设-网站 1、技术栈:java,springboot,vue,ajax,maven,mysql,MyBatisPlus等 2、系统的实现 用户信息 图片素材 视频素材 摘 ...
本课程是使用Java来讲解设计模式,考虑到设计模式比较抽象,授课采用 图解+框架源码分析的方式 1) 内容包括: 设计模式七大原则(单一职责、接口隔离、依赖倒转、里氏替换、开闭原则、迪米特法则、合成复用)、UML...
Java Design PatternsJava 设计模式学习笔记,简单易懂,每个模式都有相应的代码示列,帮助学习理解。在线阅读地址:设计原则创建型模式作用:将创建与使用代码解耦结构型模式作用:将不同的功能代码解耦桥接模式...
观察者模式是软件设计模式中的一种行为模式,它定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并被自动更新。这种模式在很多场景下都有广泛的应用,例如事件处理、...
在实现这些模式时,需要考虑是否真正符合当前需求,避免滥用设计模式。理解模式的应用场景、优缺点以及如何将模式与具体需求相结合至关重要。例如,在选择工厂模式时,需要权衡简单工厂的便利性和工厂方法的可扩展性...
读书笔记:图解Java设计模式
《HeadFirst设计模式学习笔记1--策略模式Demo》 在软件工程中,设计模式是一种解决常见问题的标准方案,它提供了一种在特定情况下组织代码的模板。策略模式是设计模式中的一种行为模式,它允许在运行时选择算法或...
Struts是一个基于MVC(Model-View-Controller)设计模式的Web应用框架,用于简化Java Servlet和JSP的开发。它将业务逻辑、控制流程和显示逻辑分离,使得应用程序更易于维护和扩展。在SSH整合中,Struts作为前端控制...
读书笔记:《图解java多线程设计模式》学习笔记
读书笔记:java设计模式示例代码《设计模式从入门到精通》
这篇Swing读书笔记目录旨在帮助开发者更好地理解和掌握Swing的相关知识,通过阅读和学习,可以提升在Java GUI编程上的技能。 首先,Swing是Java Foundation Classes (JFC)的一部分,它是Sun Microsystems为Java平台...
本站是一个B/S模式系统,采用Spring Boot框架作为后台开发技术,前端框架是VUE,MYSQL数据库设计开发,充分保证系统的稳定性。 从管理员、用户的功能要求出发,读书笔记共享平台系统中的功能模块主要是实现管理员;...
读书笔记:谷粒学院_图解Java设计模式