Java设计模式详解:23种模式实践指南
需积分: 10 15 浏览量
更新于2024-07-24
收藏 934KB DOCX 举报
JAVA设计模式(Design Patterns)
设计模式(Design Patterns)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。毫无疑问,设计模式于己于他人于系统都是多赢的,设计模式使代码编制真正工程化,设计模式是软件工程的基石,如同大厦的一块块砖石一样。
设计模式的分类:
1. 创建型模式(共五种)
* 工厂方法模式(Factory Method Pattern):提供一个创建对象的接口,但允许子类决定实例化哪个类。
* 抽象工厂模式(Abstract Factory Pattern):提供一个创建对象的接口,但允许子类决定实例化哪个类。
* 单例模式(Singleton Pattern):保证一个类只有一个实例,并提供一个访问该实例的全局点。
* 建造者模式(Builder Pattern):将一个复杂对象的构建与其表示分离,使得同样的构建过程可以创建不同的表示。
* 原型模式(Prototype Pattern):使用原型实例指定要创建对象的种类,并且通过拷贝这个原型创建新的对象。
2. 结构型模式(共七种)
* 适配器模式(Adapter Pattern):将一个类的接口转换成另一个接口,以满足客户的需求。
* 装饰器模式(Decorator Pattern):动态地给一个对象添加一些额外的职责。
* 代理模式(Proxy Pattern):为其他对象提供一种代理以控制对这个对象的访问。
* 外观模式(Facade Pattern):为子系统中的一组接口提供一个一致的界面。
* 桥接模式(Bridge Pattern):将抽象部分与它的实现部分分离,使它们都可以独立地变化。
* 组合模式(Composite Pattern):将对象组合成树形结构以表示部分整体的层次结构。
* 享元模式(Flyweight Pattern):使用共享来实现大量细粒度对象的使用。
3. 行为型模式(共十一种)
* 策略模式(Strategy Pattern):定义一个算法家族,并且使其可互换。
* 模板方法模式(Template Method Pattern):提供一个方法的框架,并允许子类决定某些步骤。
* 观察者模式(Observer Pattern):定义对象的一种一对多的依赖关系。
* 迭代子模式(Iterator Pattern):提供一种方法顺序访问一个聚合对象中的各个元素。
* 责任链模式(Chain of Responsibility Pattern):使多个对象都有机会处理请求。
* 命令模式(Command Pattern):将一个请求封装为一个对象,从而使您可以用不同的请求对客户进行参数化。
* 备忘录模式(Memento Pattern):在不破坏封装性的前提下,捕获一个对象的内部状态。
* 状态模式(State Pattern):当一个对象的内在状态改变时允许其改变行为。
* 访问者模式(Visitor Pattern):提供一种机制,使您可以在不修改现有类的情况下增加新的操作。
* 中介者模式(Mediator Pattern):使用一个中介者对象来封装一组对象之间的交互。
* 解释器模式(Interpreter Pattern):给定一个语言,定义它的文法的一种表示,并定义一个解释器。
设计模式的六大原则:
1. 开闭原则(Open-Close Principle):开闭原则就是说对扩展开放,对修改关闭。在程序需要进行拓展的时候,不能去修改原有的代码,实现一个热插拔的效果。
2. 依赖倒置原则(Dependency Inversion Principle):高层模块不应该依赖于低层模块,而应该依赖于抽象。
3. 接口隔离原则(Interface Segregation Principle):客户端不应该被迫依赖于它不使用的接口。
4. 合成/聚合复用原则(Composite/Aggregate Reuse Principle):尽量使用合成/聚合,而不是继承关系。
5. 迪米特法则(Law of Demeter):一个对象应该对其他对象保持最少的了解。
6. 里氏代换原则(Liskov Substitution Principle):子类型必须能够替换基类型。
设计模式是软件工程的基石,使代码编制真正工程化,并且使代码更容易被他人理解、保证代码可靠性。
2023-03-16 上传
2023-03-25 上传
2023-06-06 上传
2023-03-31 上传
2023-05-03 上传
2023-05-25 上传
2023-02-06 上传
「已注销」
- 粉丝: 0
- 资源: 1
最新资源
- WPF渲染层字符绘制原理探究及源代码解析
- 海康精简版监控软件:iVMS4200Lite版发布
- 自动化脚本在lspci-TV的应用介绍
- Chrome 81版本稳定版及匹配的chromedriver下载
- 深入解析Python推荐引擎与自然语言处理
- MATLAB数学建模算法程序包及案例数据
- Springboot人力资源管理系统:设计与功能
- STM32F4系列微控制器开发全面参考指南
- Python实现人脸识别的机器学习流程
- 基于STM32F103C8T6的HLW8032电量采集与解析方案
- Node.js高效MySQL驱动程序:mysqljs/mysql特性和配置
- 基于Python和大数据技术的电影推荐系统设计与实现
- 为ripro主题添加Live2D看板娘的后端资源教程
- 2022版PowerToys Everything插件升级,稳定运行无报错
- Map简易斗地主游戏实现方法介绍
- SJTU ICS Lab6 实验报告解析