设计模式简介

本文整理自网络资料,简要的介绍下设计模式的种类和实现了这些设计模式的java代码例子。

1.设计模式简介

设计模式是解决问题的方案,学习现有的设计模式可以做到经验复用。

拥有设计模式词汇,在沟通时就能用更少的词汇来讨论,并且不需要了解底层细节。

2.设计模式三大分类

2.1创建型

 

名称作用举例
Singleton (单例模式)确保一个类只有一个实例,并提供该实例的全局访问点。
Simple Factory (简单工厂)在创建一个对象时不向客户暴露内部细节,并提供一个创建对象的通用接口。

Factory Method (工厂方法)

定义了一个创建对象的接口,但由子类决定要实例化哪个类。工厂方法把实例化操作推迟到子类。
Abstract Method (抽象工厂)提供一个接口,用于创建相关的对象家族 。
Builder (生成器)封装一个对象的构造过程,并允许按步骤构造。
Prototype (原型)使用原型实例指定要创建对象的类型,通过复制这个原型来创建新对象。

2.2 行为型

 

名称作用举例
Chain Of Responsibility (单例模式)使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链发送该请求,直到有一个对象处理它为止。
Command (命令模式)

将命令封装成对象中,具有以下作用:

  • 使用命令来参数化其它对象

  • 将命令放入队列中进行排队

  • 将命令的操作记录到日志中

  • 支持可撤销的操作

Interpreter (解释器模式)为语言创建解释器,通常由语言的语法和语法分析来定义。
Iterator (迭代器模式)提供一种顺序访问聚合对象元素的方法,并且不暴露聚合对象的内部表示。
Meditator (中介者模式)集中相关对象之间复杂的沟通和控制方式。
Memento (备忘录模式)在不违反封装的情况下获得对象的内部状态,从而在需要时可以将对象恢复到最初状态。
Observer (观察者模式)

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

主题(Subject)是被观察的对象,而其所有依赖者(Observer)称为观察者。

State (状态模式)允许对象在内部状态改变时改变它的行为,对象看起来好像修改了它所属的类。
Strategy (策略模式)

定义一系列算法,封装每个算法,并使它们可以互换。

策略模式可以让算法独立于使用它的客户端。

Template Method (模板方法)

定义算法框架,并将一些步骤的实现延迟到子类。

通过模板方法,子类可以重新定义算法的某些步骤,而不用改变算法的结构。

Visitor (访问者模式)为一个对象结构(比如组合结构)增加新能力。
Null (空对象模式)

使用什么都不做的空对象来代替 NULL。

一个方法返回 NULL,意味着方法的调用端需要去检查返回值是否是 NULL,这么做会导致非常多的冗余的检查代码。并且如果某一个调用端忘记了做这个检查返回值,而直接使用返回的对象,那么就有可能抛出空指针异常。

 

2.3 结构型

 

名称作用举例
Adapter (适配器模式)把一个类接口转换成另一个用户需要的接口。
Bridge (桥接模式)将抽象与实现分离开来,使它们可以独立变化。
  • JDBC
Composite (组合模式)将对象组合成树形结构来表示“整体/部分”层次关系,允许用户以相同的方式处理单独对象和组合对象。
Decorator (装饰模式)为对象动态添加功能。
Facade (外观模式)提供了一个统一的接口,用来访问子系统中的一群接口,从而让子系统更容易使用。
  • SLF4J
Flyweight (享元模式)利用共享的方式来支持大量细粒度的对象,这些对象一部分内部状态是相同的。
Proxy (代理模式)控制对其它对象的访问。

 

参考资料

0.设计模式

https://www.xuxueli.com/blog/?blog=./notebook/2-%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F.md

1.设计模式(1):简单工厂模式(Simple Factory Pattern)

https://blog.csdn.net/u012877472/article/details/61932112

2.中介者模式在JDK源码中的应用

https://blog.csdn.net/qq_36970993/article/details/112406703

3.网上有关design pattern的教程

https://www.runoob.com/design-pattern/design-pattern-tutorial.html

https://refactoring.guru/design-patterns

https://sourcemaking.com/design_patterns/

https://blogs.oracle.com/javamagazine/design-patterns-2

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值