Java设计模式实战宝典:提升代码效能的23个秘籍

Java设计模式实战宝典:提升代码效能的23个秘籍

首页卡牌对战代号23游戏更新时间:2024-06-04

java设计模式的原理是基于软件工程的实践经验,总结出的一套解决特定问题的优秀解决方案。设计模式不是直接的代码实现,而是一套指导思想和方法论,用于在软件开发过程中解决常见问题,并提高代码的可维护性、可扩展性和可重用性。

花了3天的时间把23种设计模式都制作成了短视频,大家如果想系统学习,值得每一讲都去看看。这一篇主要再总结一下设计模式的用处?设计模式如何去学习及用起来?

设计模式的用处:

不用多说设计模式的用处,《设计模式:可复用面向对象软件的基础》在1994年出版的,GOF书籍总结了23种设计模式;这些模式不仅适用于Java,还适用于其他面向对象的编程语言。由于Java是一种面向对象的编程语言,设计模式作为一种面向对象设计的最佳实践,自然在Java社区中得到了广泛的应用和研究。随着Java语言在工业界的普及,开发者们开始寻求解决复杂软件设计问题的最佳实践,最佳实践逐渐被整理、归纳并形成了一套设计模式。Java设计模式的概念和分类是在Java语言诞生并得到广泛应用之后被系统化和总结出来的。是软件工程实践中对常见问题解决方案的经验和智慧的结晶。如果你想真正把Java学好,站在巨人的肩膀定会事半功倍,设计模式思想遍布于Java各种框架中,想Java学的好,设计模式不能忘了。想Java代码写的好,设计模式逃不了。

23种设计模式分为创建型、结构型和行为型三大类。

创建型设计模式

1、单例模式

原理:确保一个类只有一个实例,并提供一个全局访问点。

应用场景:适用于需要全局唯一资源管理的场景,如配置管理器、数据库连接池。

框架应用:在java.util.Timer、java.awt.Desktop、数据库连接池等中使用单例模式管理实例。

2、工厂方法模式

原理:定义创建对象的接口,让子类决定实例化哪一个类。

应用场景:用于处理大量具有共同特征的对象创建。

框架应用:Java IO中的InputStream和OutputStream使用工厂方法模式创建具体的流对象。

3、抽象工厂模式

原理:提供一个接口,用于创建相关或依赖对象的家族,而不需要明确指定具体类。

应用场景:适用于需要创建一系列相关或相互依赖的对象时。

框架应用:Swing中的LookAndFeel外观工厂用于创建GUI组件。

4、建造者模式

原理:将一个复杂对象的构建与其表示分离,使得同样的构建过程可以创建不同的表示。

应用场景:用于创建复杂对象,如SQL语句构建器。

框架应用:Apache Commons Lang中的Builder类使用建造者模式。

5、原型模式

原理:通过复制现有的实例来创建新的实例。

应用场景:适用于创建成本高或复杂的对象。

框架应用:java.lang.Object的clone()方法使用原型模式。

结构型设计模式

6、代理模式

原理:为对象提供一个代理以控制对这个对象的访问。

应用场景:适用于远程访问、延迟加载等。

Java框架应用:Java RMI和Spring AOP使用代理模式

7、桥接模式

原理:将抽象部分与它的实现部分分离,使它们都可以独立地变化。

应用场景:适用于变化多样且要求相互间不影响的场景。

Java框架应用:不常见,一般用于自定义场景。

8、装饰器模式

原理:动态地给一个对象添加一些额外的职责。

应用场景:用于动态扩展对象功能。

框架应用:Java IO中的BufferedReader和BufferedWriter使用装饰器模式。

9、适配器模式

原理:将一个类的接口转换成客户期望的另一个接口。

应用场景:用于接口不兼容的类之间转换。

框架应用:Java IO中的InputStreamReader和OutputStreamWriter使用适配器模式。

10、外观模式

原理:为子系统中的一组接口提供了一个统一的高层接口。

应用场景:适用于简化复杂系统的接口。

Java框架应用:Spring中的JdbcTemplate使用外观模式简化数据库操作。

11、组合模式

原理:将对象组合成树状结构来表示部分-整体的层次结构

应用场景:对象的部分-整体层次结构、无差别地处理单个对象和组合对象

Java框架应用Java AWT/Swing

12、享元模式

原理:运用共享技术有效地支持大量细粒度对象的复用。

应用场景:适用于大量相似对象的共享。

Java框架应用:Java中的String对象池使用享元模式。

行为型设计模式

13、观察者模式

原理:定义对象之间的一对多依赖关系,当一个对象改变状态时,它的所有依赖者都会收到通知并自动更新。

应用场景:用于实现事件监听机制。

Java框架应用:Java中的EventListener接口和Spring框架的事件监听机制使用观察者模式。

14、模板方法模式

原理:定义一个操作中的算法的骨架,将一些步骤延迟到子类中。

应用场景:适用于定义算法的骨架。

框架应用:Spring中的JdbcTemplate使用模板方法模式。

15、策略模式

原理:定义了一系列的算法,并将每一个算法封装起来,使它们可以互相替换。

应用场景:适用于在运行时根据条件选择不同行为。

框架应用:Spring框架中的Strategy接口使用策略模式。

16、责任链模式

原理:使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。

应用场景:适用于需要按照某种顺序依次处理请求。

框架应用:Spring MVC中的拦截器使用责任链模式。

17、状态模式

原理:允许一个对象在其内部状态改变时改变它的行为。

应用场景:适用于对象状态变化时改变行为的场景。

框架应用:Java中的ReadWriteLock使用状态模式。

18、迭代器模式

原理:提供一种方法顺序访问一个聚合对象中的各个元素,而又不暴露该对象的内部表示。

应用场景:用于遍历聚合对象。

框架应用:Java集合框架中的Iterator接口使用迭代器模式。

19、访问者模式

原理:表示一个作用于某对象结构中的各元素的操作。

应用场景:适用于对象结构中元素类很多且经常变化的场景。

框架应用:不常见,一般用于自定义场景。

20、备忘录模式

原理:在不破坏封装的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。

应用场景:用于保存和恢复对象状态。

Java框架应用:不常见,一般用于自定义场景。

21、命令模式

原理:将一个请求封装为一个对象,从而可用不同的请求对客户进行参数化。

应用场景:适用于需要命令队列或日志记录的场景。

框架应用:Java中的Runnable接口使用命令模式。

22、解释器模式

原理:给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。

应用场景:适用于解释型语言的实现。

框架应用:不常见,一般用于自定义场景。

23、中介者模式

原理:用一个中介对象来封装一系列的对象交互。

应用场景:适用于多对多的交互关系。

Java框架应用:不常见,一般用于自定义场景。

设计模式如何去学习及用起来:

1、面向编程的基础知识及学习原则:编程基础知识就不提了,学习设计模式哪你得会Java,同时要熟悉SOLID原则,是设计模式的基础。

2、动手实践:每个模式自己敲一遍加深理解,当然一遍不能完全做到游刃有余的运用,要不断加深理解跟记忆,忘记了随时拿出来再看看。

3、观察实例:在开源项目中寻找设计模式的应用,这些开源项目是不是经常用的?

RxJava:RxJava是一个在Java虚拟机上实现的响应式扩展,它使用了观察者模式来处理异步数据流和事件的传播。

Spring Framework:Spring框架是Java社区中广泛使用的开源企业级应用开发框架,它在多个方面应用了设计模式,例如工厂模式用于创建对象,代理模式用于AOP(面向切面编程),单例模式用于Spring容器中的Bean实例化等。

Guava:Guava是Google开发的一套核心Java库,提供了许多基础功能,其中包含了设计模式的应用,如享元模式在缓存实现中的应用。

Lombok:Lombok是一个Java注解库,它通过减少样板代码来简化Java对象的编写。它使用了建造者模式来提供更简洁的对象构建方式。

MyBatis:MyBatis是一个持久层框架,它通过工厂模式和单例模式来管理和创建SQL映射器,同时使用代理模式来处理动态代理。

4、持续应用:在实际项目中尝试使用设计模式,不断总结经验,同时可以不断的看我录制的短视频

单例模式:确保一个类只有一个实例,并提供一个全局访问点。

工厂方法模式:定义一个创建对象的接口,让子类决定实例化哪一个类。

抽象工厂模式:提供一个接口,用于创建相关或依赖对象的家族,而不需要明确指定具体类。

建造者模式:将一个复杂对象的构建与其表示分离,使得同样的构建过程可以创建不同的表示。

原型模式:通过复制现有的实例来创建新的实例。

适配器模式:将一个类的接口转换成客户期望的另一个接口。

桥接模式:将抽象部分与它的实现部分分离,使它们都可以独立地变化。

装饰器模式:动态地给一个对象添加一些额外的职责。

外观模式:为子系统中的一组接口提供了一个统一的高层接口。

享元模式:运用共享技术有效地支持大量细粒度对象的复用。

代理模式:为对象提供一个代理以控制对这个对象的访问。

策略模式:定义了一系列的算法,并将每一个算法封装起来,使它们可以互相替换。

模板方法模式:定义一个操作中的算法的骨架,将一些步骤延迟到子类中。

观察者模式:定义对象之间的一对多依赖关系,当一个对象改变状态时,它的所有依赖者都会收到通知并自动更新。

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

责任链模式:使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。

命令模式:将一个请求封装为一个对象,从而可用不同的请求对客户进行参数化。

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

状态模式:允许一个对象在其内部状态改变时改变它的行为。

访问者模式:表示一个作用于某对象结构中的各元素的操作。

中介者模式:用一个中介对象来封装一系列的对象交互。

解释器模式:给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。

查看全文
大家还看了
也许喜欢
更多游戏

Copyright © 2024 妖气游戏网 www.17u1u.com All Rights Reserved