Java技术_每天掌握一种设计模式(001)_设计模式概念及分类

简介:

Java技术_每天掌握一种设计模式(001)_设计模式概念及分类

Java技术_每天掌握一种设计模式(002)_使用场景及简单实例(创建型:单例模式)

Java技术_每天掌握一种设计模式(003)_使用场景及简单实例(创建型:工厂方法)

Java技术_每天掌握一种设计模式(004)_使用场景及简单实例(创建型:抽象工厂)

Java技术_每天掌握一种设计模式(005)_使用场景及简单实例(创建型:建造模式)

Java技术_每天掌握一种设计模式(006)_使用场景及简单实例(创建型:原型模式)


1.文章目的

用最简单的语言、最简单的例子讲解java的设计模式。


望各位指教!

例子不是简单的讲理论,均是项目中实际能用到的。

例如提到工厂,不会举是car、human这种理解简单却看不到用处的例子;取而代之我会举"通知"这个例子,短信、邮件、oa待办这三个都具有通知方法的产品,在讲理论的同时,更具实用价值。


实例代码下载:创建型5种、结构型7种、行为型11种、其他(代码都会粘到博文中,都搞完了打个包再发,博文中不对实例做解释的原因是:代码里注释比较详细)。

2.设计模式概念

概念:在一定条件下,解决某一类问题的解决方案。

描述:用来解决开发者重复发生的问题的一套解决方案(该方案是经过千万人优化整合的)。

基本要素:环境(前提条件)、问题、解决方案。

意义:每次碰到类似问题,可以直接使用该方案,而不用做重复的劳动。

3.设计模式分类

根据要解决问题的不同,大致分为三类:

创建型:解决创建对象时的问题,主要目的是:更高效的创建对象、更合理的管理对象等等。

结构型:解决对象组成、对象之间关系的问题,主要目的是:更高的可维护性、更健壮的代码,更松散的耦合性等等。

行为型:解决对象行为、对象行为关系的问题,主要目的是:更清晰的行为功能、更高的协作效率等等。

4.常见设计模式(23种)

创建型(5种,均按照使用频率排序):

1、单例模式(Singleton):一个类有且仅有一个实例,并且自行实例化并向整个系统提供。

2、工厂方法(Factory Method):提供一个用于创建对象的接口,让其实现类决定实例化哪一个类,并且由该实现类创建对应类的实例。

3、抽象工厂(Abstract Factory):提供一个用于创建一系列相关或相互依赖对象的接口,而无须指定它们的具体类。

4、建造模式(Builder):将一个复杂对象的构建与他的表示相分离,使得同样的构建过程可以创建不同的表示。

5、原型模式(Prototype):用原型实例指定创建对象的种类,并且通过拷贝来创建新的对象。


结构型(7种,均按照使用频率排序):

1、组合模式(Composite):将对象组合成树形结构,用来表示表示整体的关系。

2、外观模式(Facade):为子系统中的一组接口提供一致的界面,使得子系统更容易使用。

3、代理模式(Proxy):为其他对象提供一个代理对象,通过代理对象控制对象的访问。

4、适配器模式(Adapter):将一个类的接口转换成另一个接口,使得原本由于接口不兼容的类可以一起工作。

5、装饰模式(Decorator):动态地给一个对象增加功能。

6、桥模式(Bridge):将抽象部分与它的实现部分相分离。

7、享元模式(Flyweight):复用、共享我们内存中已存在的对象,降低系统创建对象实例的性能消耗。


行为型(11种,均按照使用频率排序):

1、迭代器模式(Iterator):提供一个方法,顺序访问一个聚合对象的各个元素,而又不需要暴露该对象的内部表示。

2、观察者模式(Observer):定义对象间一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知自动更新。

3、模板方法(Template Method):定义一个操作中的算法的框架,使得可以不改变一个算法的结构即可以重定义该算法得某些特定步骤。

4、命令模式(Command):将一个请求封装为一个对象,可以用不同的请求进行参数化,对请求排队和记录请求日志,以及支持可撤销的操作。

5、状态模式(State):允许对象在其内部状态改变时,改变他的行为,看起来就像改变了他的类。

6、策略模式(Strategy):定义一系列的算法,把他们一个个封装起来,并使他们可以互相替换,本模式使得算法可以独立于使用它们的客户。

7、职责链模式(Chain of Responsibility):若某个对象处理不了该请求,则会传到下一个对象,直到处理为止,避免了请求的送发者和接收者之间的耦合关系。

8、中介者模式(Mediator):用一个中介对象封装一系列的对象交互。

9、访问者模式(Visitor):表示一个作用于某对象结构中的各元素的操作,可以在不改变各元素类的前提下,定义作用于这个元素的新操作。

10、解释器模式(Interpreter):定义语法中的一个表示,并定义一个解释器,使用该表示来解释语言中的句子。

11、备忘录模式(Memento):在不破坏对象的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。


原文地址:http://blog.csdn.net/ooppookid/article/details/42554235
相关文章
|
7天前
|
安全 Java API
Java Web 在线商城项目最新技术实操指南帮助开发者高效完成商城项目开发
本项目基于Spring Boot 3.2与Vue 3构建现代化在线商城,涵盖技术选型、核心功能实现、安全控制与容器化部署,助开发者掌握最新Java Web全栈开发实践。
59 1
|
7天前
|
安全 Cloud Native Java
Java 模块化系统(JPMS)技术详解与实践指南
本文档全面介绍 Java 平台模块系统(JPMS)的核心概念、架构设计和实践应用。作为 Java 9 引入的最重要特性之一,JPMS 为 Java 应用程序提供了强大的模块化支持,解决了长期存在的 JAR 地狱问题,并改善了应用的安全性和可维护性。本文将深入探讨模块声明、模块路径、访问控制、服务绑定等核心机制,帮助开发者构建更加健壮和可维护的 Java 应用。
66 0
|
13天前
|
监控 Cloud Native Java
Quarkus 云原生Java框架技术详解与实践指南
本文档全面介绍 Quarkus 框架的核心概念、架构特性和实践应用。作为新一代的云原生 Java 框架,Quarkus 旨在为 OpenJDK HotSpot 和 GraalVM 量身定制,显著提升 Java 在容器化环境中的运行效率。本文将深入探讨其响应式编程模型、原生编译能力、扩展机制以及与微服务架构的深度集成,帮助开发者构建高效、轻量的云原生应用。
107 44
|
27天前
|
Java 测试技术 API
2025 年 Java 开发者必知的最新技术实操指南全览
本指南涵盖Java 21+核心实操,详解虚拟线程、Spring Boot 3.3+GraalVM、Jakarta EE 10+MicroProfile 6微服务开发,并提供现代Java开发最佳实践,助力开发者高效构建高性能应用。
256 4
|
28天前
|
安全 Java 编译器
new出来的对象,不一定在堆上?聊聊Java虚拟机的优化技术:逃逸分析
逃逸分析是一种静态程序分析技术,用于判断对象的可见性与生命周期。它帮助即时编译器优化内存使用、降低同步开销。根据对象是否逃逸出方法或线程,分析结果分为未逃逸、方法逃逸和线程逃逸三种。基于分析结果,编译器可进行同步锁消除、标量替换和栈上分配等优化,从而提升程序性能。尽管逃逸分析计算复杂度较高,但其在热点代码中的应用为Java虚拟机带来了显著的优化效果。
50 4
|
1月前
|
Java API Maven
2025 Java 零基础到实战最新技术实操全攻略与学习指南
本教程涵盖Java从零基础到实战的全流程,基于2025年最新技术栈,包括JDK 21、IntelliJ IDEA 2025.1、Spring Boot 3.x、Maven 4及Docker容器化部署,帮助开发者快速掌握现代Java开发技能。
338 1
|
1月前
|
JavaScript 安全 前端开发
Java开发:最新技术驱动的病人挂号系统实操指南与全流程操作技巧汇总
本文介绍基于Spring Boot 3.x、Vue 3等最新技术构建现代化病人挂号系统,涵盖技术选型、核心功能实现与部署方案,助力开发者快速搭建高效、安全的医疗挂号平台。
128 3
|
1月前
|
存储 人工智能 算法
Java 大视界 -- Java 大数据在智能医疗影像数据压缩与传输优化中的技术应用(227)
本文探讨 Java 大数据在智能医疗影像压缩与传输中的关键技术应用,分析其如何解决医疗影像数据存储、传输与压缩三大难题,并结合实际案例展示技术落地效果。
|
1月前
|
机器学习/深度学习 算法 Java
Java 大视界 -- Java 大数据在智能物流运输车辆智能调度与路径优化中的技术实现(218)
本文深入探讨了Java大数据技术在智能物流运输中车辆调度与路径优化的应用。通过遗传算法实现车辆资源的智能调度,结合实时路况数据和强化学习算法进行动态路径优化,有效提升了物流效率与客户满意度。以京东物流和顺丰速运的实际案例为支撑,展示了Java大数据在解决行业痛点问题中的强大能力,为物流行业的智能化转型提供了切实可行的技术方案。
|
1月前
|
分布式计算 Cloud Native 安全
Java:历久弥新的技术基石
Java:历久弥新的技术基石