设计模式及适用场景

简介: 设计模式及适用场景

一、命令模式

定义:

命令将一个请求封装为一个对象,从而使得可以使用不同的请求对客户进行参数化,对请求排队或记录请求日志,以及可撤销的操作。

适用情况:

1、抽象出待执行的动作以参数化某对象,此模式是过程语言中的回调机制的一个面向对象的替代方法;

2、在不同的时刻指定、排列和执行请求;

3、支持取消操作;

4、支持修改日志,这样当系统崩溃时,这些修改可以重新被做一遍;

5、用构建在原语操作上的高层操作构造一个系统;

二、责任链模式

定义:

责任链是多个对象都有机会处理请求,从而避免请求的发送者和接受者之间的耦合关系。讲这些对象连成一条链,并沿着这条链传递改请求,知道有一个对象处理它为止。

适用情况:

1、有多个的对象可以处理一个请求,哪个对象处理该请求在运行时刻自动确定;

2、在不明确指定接受者的情况下,向多个对象中的一个提交一个请求;

3、可处理一个请求的对象集合应被动态指定;

三、观察者模式

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

适用情况:

1、当一个抽象模型有两个方面,其中一个方面依赖于另一个方面,将这两者封装在独立地对象中以使他们可以各自独立地改变和复用;

2、当对一个对象的改变同时需要改变其他对象,而不知道具体有多少个对象待改变时;

3、当一个对象必须通知其他对象,他又不能假定其他对象是谁,即:不希望这些对象是紧耦合;

四、策略模式

策略定义一系列的算法,把它们一个个封装起来,并且使他们可以相互替换。此模式使得算法可以独立于使用他们的客户而变化。

适用情况:

1、许多相关的类仅仅是行为有异,策略提供了一种用多个行为中的一个行为来配置一个类的方法;

2、需要使用一个算法的不同变体。例如,定义一些反应不同空间的空间/时间权衡的算法,当这些变体实现为一个算法的类层次时,可以使用策略模式;

3、算法使用客户不应该知道的数据。可以使用策略模式以避免暴露复杂的、与算法相关的数据结构;

4、一个类定义了多种行为,并且这些行为在这个类的操作中以多个条件语句的形式出现,将相关的条件分支移入他们各自的Strategy类中


相关文章
|
3月前
|
设计模式 算法 搜索推荐
java介绍几种常见的设计模式及其应用场景。
java介绍几种常见的设计模式及其应用场景。
202 1
|
2月前
|
设计模式 缓存 安全
Java设计模式的单例模式应用场景
Java设计模式的单例模式应用场景
32 4
|
1月前
|
设计模式 Java
Java中的设计模式及其应用场景解析
Java中的设计模式及其应用场景解析
|
2月前
|
设计模式 Java 开发者
Head First设计模式详解与应用场景分析
Head First设计模式详解与应用场景分析
|
29天前
|
设计模式 数据采集 监控
iLogtail设计模式问题之单例模式主要适用于什么场景
iLogtail设计模式问题之单例模式主要适用于什么场景
|
1月前
|
设计模式 Java 开发者
工厂设计模式的实现与应用场景分析
工厂设计模式的实现与应用场景分析
|
3月前
|
设计模式 算法 Java
【设计模式】策略模式在数据接收和发送场景的应用
在数据接收和发送场景打算使用了if else进行判断。ASystem.sync("向A同步数据");BSystem.sync("向B同步数据");...非常麻烦,需求多了很臃肿!策略模式(Strategy Pattern)定义了一组同类型的算法,在不同的类中封装起来,每种算法可以根据当前场景相互替换,从而使算法的变化独立于使用它们的客户端(即算法的调用者)。// 创建两个策略对象// 创建上下文对象,并传入策略对象。
75 1
|
3月前
|
设计模式 消息中间件 存储
18个并发场景的设计模式详解,有没有你的盲区
这些模式在多线程并发编程中非常有用`。在分布式应用中,并发场景无处不在,理解和掌握这些并发模式的编码技巧,有助于我们在开发中解决很多问题,这要把这些与23种设计模式混淆了,虽然像单例模式是同一个,但这个是考虑并发场景下的应用。内容比较多,V哥建议可以收藏起来,即用好查。拜拜了您誒,晚安。
126 1
18个并发场景的设计模式详解,有没有你的盲区
|
3月前
|
设计模式 算法 Java
设计模式在现代软件开发中的应用场景
设计模式在现代软件开发中的应用场景
52 0
|
3月前
|
设计模式 Java 数据库连接
设计模式与面向对象编程:举例说明在Java中应用工厂模式的场景,并编写一个简单的工厂模式实现。编写一个Java装饰器,用于添加日志记录功能到现有方法上。
设计模式与面向对象编程:举例说明在Java中应用工厂模式的场景,并编写一个简单的工厂模式实现。编写一个Java装饰器,用于添加日志记录功能到现有方法上。
33 0