设计模式学习笔记(Java篇)之设计模式原则
来源:互联网 发布:什么叫分布式系统 知乎 编辑:程序博客网 时间:2024/05/29 12:09
1. 设计模式
一个设计模式就是一个已被记录的最佳实践或一个解决方案,这个最佳实践或解决方案已被成功运用到许多环境中他解决了在某种特定情境下重复发生的某个问题
2. 设计原则之开闭原则
开闭原则(Open Closed Principe)是指“软件实体应当对扩展开放,对修改封闭”,这意味着模块的行为是可扩展的,但是在扩展时不必修改模块的源代码
个人理解为,当系统需要新功能或者需要添加新类,新模块时,不需要修改已经有的代码,只需要添加新类或者新模块即可。
优点:
1. 可扩展程度高,非常灵活,这样软件可以不断增加新模块,来满足不断更新的需求。
2. 可维护性强,无需修改原有代码。
3. 设计原则之单一职责原则
单一职责原则(Single Responsibility Principle)是指“就一个类而言,应该仅有一个引起它变化的原因”。这意味这一个类,只需要按照职责进行功能设计。
个人理解为就是相同的职责写到同一个类中,提高代码可重用性,一个类只需有一个职责,大概就是从一而终的优良传统。
优点:
1.有助于理清设计和编码思路
2.有助于简化设计、编码、测试流程
3. 复杂问题简单化,提高代码重用
4. 职责之间消除耦合,有助于系统扩展
4. 设计原则之里氏替换原则
里氏替换原则(Liskov Substitution Principle)是指“若对每一个类型S的对象o1,都存在一个类型T的对象o2 使得在程序中,用o1替换o2后,程序行为不变,则S是T的子类型”
个人理解而言就是每一个子类都能够替换到他们的父类,即每一个子类都需要实现父类的全部功能,就是在调用时可以调用父类,然后子类替换掉父类。
优点:
1. 减少重复代码,提高代码重用
2. 提高代码开放性
5. 设计原则之依赖倒换原则
依赖倒换原则(Dependence Inversion Principle)存在两种定义,定义一:“高层模块不应该依赖于底层模块,二者都应该依赖于抽象。抽象不应该依赖于细节,细节应当依赖于抽象”,定义二:“要针对接口编程,不要针对实现编程”。
优点:
1. 提高系统的可扩展性
2. 提高系统的灵活性
6.设计原则之接口隔离原则
接口隔离原则有两个定义,定义一:不应该强迫客户依赖于他们不用的方法,定义二:“一个类对另一个类的依赖性应当建立在最小接口上”
个人理解就是为实现类提供尽可能少的接口来满足实现类的所有功能,这也意味着接口内方法尽可能根据不同职责分成多个接口
优点:
1.减少代码冗余
2. 职责修改时不必改动接口,提高系统灵活性
7. 设计原则之迪米特法则
迪米特法则又叫做最少知识原则,他指一个对象应该对其他对象有尽可能少的了解,不必和不相识的人直接联系
个人理解就是尽可能的隐藏类中和模块中的细节,通过第三方类等来转发调用等等。
优点:
1.降低模块之间的耦合度,降低类之间的依赖性
2.更加符合开闭原则对类修改的要求
3.系统内部数据和实现细节隐藏,从而提高代码的可重用性和系统的可维护性
- 设计模式学习笔记(Java篇)之设计模式原则
- Java学习笔记之设计模式原则
- 【设计模式】学习笔记之设计原则
- 《JAVA与模式》学习笔记之面向对象设计原则
- JAVA与模式学习笔记之设计原则
- 学习设计模式原则之依赖倒置原则,代码笔记
- 设计模式之学习笔记1-----设计原则
- 设计模式 学习笔记 之 设计原则 (2)
- java设计模式学习笔记--面向对象设计原则
- 《Java与模式》学习笔记:设计模式——原则
- java之设计模式原则
- 设计原则(设计模式学习笔记)
- 设计模式学习笔记---设计原则
- 设计模式之禅笔记--设计原则
- 设计模式学习笔记(一):设计模式与设计原则
- 设计模式之设计原则学习
- java设计模式之设计原则
- JAVA设计模式之OO设计原则
- 【前端技巧】html右键禁用和web页面中添加加入qq群的方式
- Java环境搭建一JDK安装下载配置
- Python的7种性能测试工具:timeit、profile、cProfile、line_profiler、memory_profiler、PyCharm图形化性能测试工具、objgraph
- C#在异常中获取HttpStatusCode用法
- 实操VS2015配置内存泄漏检查工具Visual Leak Detector
- 设计模式学习笔记(Java篇)之设计模式原则
- Java 常见内存溢出异常与代码实现
- NodeJS MongoDB CURD 入门
- 子类使用构造函数初始化父类的私有数据
- IDEA生成API接口文档
- Android 项目混淆系列2
- scala快速掌握
- JavaScript里的await/async的作用和用法
- jsp页面报错javax.servlet.jsp.JspException cannot be resolved to a type