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
相关文章
|
5天前
|
存储 监控 安全
单位网络监控软件:Java 技术驱动的高效网络监管体系构建
在数字化办公时代,构建基于Java技术的单位网络监控软件至关重要。该软件能精准监管单位网络活动,保障信息安全,提升工作效率。通过网络流量监测、访问控制及连接状态监控等模块,实现高效网络监管,确保网络稳定、安全、高效运行。
32 11
|
15天前
|
XML Java 编译器
Java注解的底层源码剖析与技术认识
Java注解(Annotation)是Java 5引入的一种新特性,它提供了一种在代码中添加元数据(Metadata)的方式。注解本身并不是代码的一部分,它们不会直接影响代码的执行,但可以在编译、类加载和运行时被读取和处理。注解为开发者提供了一种以非侵入性的方式为代码提供额外信息的手段,这些信息可以用于生成文档、编译时检查、运行时处理等。
50 7
|
15天前
|
JavaScript 安全 Java
java版药品不良反应智能监测系统源码,采用SpringBoot、Vue、MySQL技术开发
基于B/S架构,采用Java、SpringBoot、Vue、MySQL等技术自主研发的ADR智能监测系统,适用于三甲医院,支持二次开发。该系统能自动监测全院患者药物不良反应,通过移动端和PC端实时反馈,提升用药安全。系统涵盖规则管理、监测报告、系统管理三大模块,确保精准、高效地处理ADR事件。
|
21天前
|
设计模式 消息中间件 搜索推荐
Java 设计模式——观察者模式:从优衣库不使用新疆棉事件看系统的动态响应
【11月更文挑战第17天】观察者模式是一种行为设计模式,定义了一对多的依赖关系,使多个观察者对象能直接监听并响应某一主题对象的状态变化。本文介绍了观察者模式的基本概念、商业系统中的应用实例,如优衣库事件中各相关方的动态响应,以及模式的优势和实际系统设计中的应用建议,包括事件驱动架构和消息队列的使用。
|
1月前
|
设计模式 Java 数据库连接
Java编程中的设计模式:单例模式的深度剖析
【10月更文挑战第41天】本文深入探讨了Java中广泛使用的单例设计模式,旨在通过简明扼要的语言和实际示例,帮助读者理解其核心原理和应用。文章将介绍单例模式的重要性、实现方式以及在实际应用中如何优雅地处理多线程问题。
36 4
|
1月前
|
监控 前端开发 Java
【技术开发】接口管理平台要用什么技术栈?推荐:Java+Vue3+Docker+MySQL
该文档介绍了基于Java后端和Vue3前端构建的管理系统的技术栈及功能模块,涵盖管理后台的访问、登录、首页概览、API接口管理、接口权限设置、接口监控、计费管理、账号管理、应用管理、数据库配置、站点配置及管理员个人设置等内容,并提供了访问地址及操作指南。
|
1月前
|
Java 开发者
Java 中的锁是什么意思,有哪些分类?
在Java多线程编程中,锁用于控制多个线程对共享资源的访问,确保数据一致性和正确性。本文探讨锁的概念、作用及分类,包括乐观锁与悲观锁、自旋锁与适应性自旋锁、公平锁与非公平锁、可重入锁和读写锁,同时提供使用锁时的注意事项,帮助开发者提高程序性能和稳定性。
52 3
|
1月前
|
JSON 前端开发 JavaScript
java-ajax技术详解!!!
本文介绍了Ajax技术及其工作原理,包括其核心XMLHttpRequest对象的属性和方法。Ajax通过异步通信技术,实现在不重新加载整个页面的情况下更新部分网页内容。文章还详细描述了使用原生JavaScript实现Ajax的基本步骤,以及利用jQuery简化Ajax操作的方法。最后,介绍了JSON作为轻量级数据交换格式在Ajax应用中的使用,包括Java中JSON与对象的相互转换。
45 1
|
1月前
|
SQL Java 数据库连接
在Java应用中,数据库访问常成为性能瓶颈。连接池技术通过预建立并复用数据库连接,有效减少连接开销,提升访问效率
在Java应用中,数据库访问常成为性能瓶颈。连接池技术通过预建立并复用数据库连接,有效减少连接开销,提升访问效率。本文介绍了连接池的工作原理、优势及实现方法,并提供了HikariCP的示例代码。
53 3
|
1月前
|
Java 数据库连接 数据库
深入探讨Java连接池技术如何通过复用数据库连接、减少连接建立和断开的开销,从而显著提升系统性能
在Java应用开发中,数据库操作常成为性能瓶颈。本文通过问题解答形式,深入探讨Java连接池技术如何通过复用数据库连接、减少连接建立和断开的开销,从而显著提升系统性能。文章介绍了连接池的优势、选择和使用方法,以及优化配置的技巧。
39 1
下一篇
DataWorks