type
status
date
slug
summary
tags
category
icon
password
AI summary

一、定义

notion image
命令模式:将一个
请求封装为一个对象
,使发出请求的
责任和执行请求过程分隔
开。这样两者之间通过命令对象进行沟通,便于将命令对象进行储存、传递,增强。

二、示例:

模拟场景: 1、餐厅点菜,菜品分类为:⼭东(鲁菜)、四川(川菜)、江苏(苏菜)、⼴东(粤菜)、福建(闽菜)、浙江(浙菜)、湖南(湘菜)等,
每个菜肴
都有
对应的厨师
炒出来,例如
湖南厨师炒湘菜
,广东厨师炒粤菜。客户向店小二
提出炒什么菜肴
的请求,就会有
对应的厨师
去处理。
notion image

传统编码

通过if实现,客气请求不同的类型,炒出什么样的菜。例如类型增多,代码会变的很臃肿
测试:ApiTest

命令模式设计

定义做菜的接口,由各个厨师具体实现
四川厨师
⼭东厨师
江苏厨师
⼴东厨师
定义每个菜肴的接口,由各个菜肴具体实现
四川菜
山东菜
江苏菜
粤菜
店小二负责接受客人的点单信息,转发至厨师们去实现
测试:ApiTest

UML关系图

notion image
总结: 从以上的内容和例⼦可以感受到,命令模式的使⽤场景需要分为三个⽐较⼤的块;
命令 、 实现 、调⽤者
,⽽这三块内容的拆分也是选择适合场景的关键因素,经过这样的拆分可以让逻辑具备单⼀职责的性质,便于扩展。
通过这样的实现⽅式与if语句相⽐,降低了耦合性也⽅便其他的命令和实现的扩展。但同时这样的设计模式也带来了⼀点问题,就是在各种命令与实现的组合下,会扩展出很多的实现类,需要进⾏管理。
 
JAVA【设计模式】享元模式JAVA【设计模式】中介模式