Java 设计模式 之 命令模式

Java设计模式之命令模式(Command Pattern) 命令模式通过将操作封装为对象,实现了请求发送者与接收者的解耦,适用于需要支持撤销、事务、批量操作等复杂场景。,它将请求封装为独立的对象,使得不同请求的调用、队列化、日志记录或撤销操作成为可能。该模式通过解耦请求的发送者与接收者,增强系统的灵活性和扩展性。:将请求转换为包含所有请求信息的独立对象(命令),支持参数化、延迟执行、撤销/重做等功能。:按钮点击事件绑定命令对象,支持撤销(如Photoshop的“撤销上一步”)。:数据库事务的提交与回滚可视为命令模式的应用。支持命令的队列、日志、撤销/重做。 阅读详情

http://www.verejava.com/?id=16999074395365

package com.command.theory;

import java.util.ArrayList;

public class TestCommand
{
	public static void main(String[] args)
	{
		Button btnOk=new Button("确定");
		Button btnCancel=new Button("取消");
		
		btnOk.addActionListener(new ActionListener(){

			@Override
			public void actionPerformed(ActionEvent e)
			{
				System.out.println("确定按钮被点击");
			}
			
		});
		btnCancel.addActionListener(new ActionListener(){

			@Override
			public void actionPerformed(ActionEvent e)
			{
				System.out.println("取消按钮被点击");
			}
			
		});
		
		Mouse m=new Mouse();
		m.click(btnOk);
		m.click(btnCancel);
	}
}





package com.command.theory;

public class Mouse
{
	public void click(Button btn)
	{
		ActionEvent e=new ActionEvent(btn.getText(),btn);
		btn.getActionListener().actionPerformed(e);
	}
}





package com.command.theory;

public class Button
{
	private ActionListener actionListener;
	private String text;
	public Button(String text)
	{
		super();
		this.text = text;
	}
	public ActionListener getActionListener()
	{
		return actionListener;
	}
	public void addActionListener(ActionListener actionListener)
	{
		this.actionListener = actionListener;
	}
	public String getText()
	{
		return text;
	}
	public void setText(String text)
	{
		this.text = text;
	}
	
	
}





package com.command.theory;

public interface ActionListener
{
	public void actionPerformed(ActionEvent e);
}





package com.command.theory;

public class ActionEvent
{
	private String name;
	private Object source;
	public ActionEvent(String name, Object source)
	{
		super();
		this.name = name;
		this.source = source;
	}
	public String getName()
	{
		return name;
	}
	public void setName(String name)
	{
		this.name = name;
	}
	public Object getSource()
	{
		return source;
	}
	public void setSource(Object source)
	{
		this.source = source;
	}
	
	
}

http://www.verejava.com/?id=16999074395365

【Java设计模式】Java设计模式之(六)命令模式(Command Pattern) 本文目录 一、命令模式介绍 二、代码实现 2.1 通用类图 2.2 代码实现 命令模式(Command Pattern)是一种数据驱动的设计模式,它属于行为型模式。请求以命令的形式包裹在对象中,并传给调用对象。调用对象寻找可以处理该命令的合适的对象,并把该命令传给相应的对象,该对象执行命令。 一、命令模式介绍 意图:将一个请求封装成一个对象,从而使您可以用不同的请求对客户进行参数化。 主要解决:在软件系统中,行为请求者与行为实现者通常是一种紧耦合的关系,但某些场合,比如需要对行为进行记录、撤 阅读详情

相关推荐

飞牛fnOS安装1Panel后Docker容器消失?三步教你恢复数据并避免踩坑

本文详细解析了飞牛fnOS安装1Panel后Docker容器消失的问题,指出这是由于daemon.json文件被覆盖导致。通过SSH连接、修复配置文件和系统重启三个步骤,用户可以轻松恢复数据。文章还提供了预防措施和最佳实践,帮助用户避免类似问题。

yellow的专栏 869

JavaFX.进阶操作

网格布局 将整个面板划分为若干个格子,每个格子的大小是一样的,每个格子中可以放置一个控件(布局),类似于表格的方式。在网格布局 中放入控件的时候,还需要指定位置。 我们将要排出这个布局,也就是登陆页面的优化版本 位置原理讲解 以网格布局的思维来拆分该布局,可以分出一个 2*3 的网格 GridPane gridPane = new GridPane();我们可以给格子从上到下,从左到右依次编号,分别是: 得出结论: 位置 a,b 其中 a 向右移动需要变大,向下移动则 b 需

m0_68693300的博客 933

FortiGate-60E防火墙忘记密码?用Console线+TFTP重装固件v7.0.9全流程

本文详细介绍了当FortiGate-60E防火墙忘记密码且物理重置无效时,如何通过Console线连接并利用TFTP服务器重装固件(如v7.0.9)的全流程。从恢复原理、工具准备、网络配置到逐步执行命令,提供了完整的实战指南,帮助管理员彻底恢复设备出厂设置并重置密码。

snow3的博客 332

Java设计模式 Design Pattern:命令模式 Command Pattern

Java设计模式 Design Pattern:命令模式 Command Pattern 目的 Encapsulate a request as an object, thereby letting you parameterize clients with different requests, queue or log requests, and support un...

ahch8077的博客 163

IEC 62056协议栈深度拆解:从物理层握手到应用层AARQ,一次完整的DLMS通讯抓包分析

本文深入解析IEC 62056协议栈(DLMS/COSEM)的全流程通信机制,从物理层握手到应用层AARQ建立,提供详细的抓包分析和实战指南。涵盖RS-485配置、HDLC帧解析、OBIS编码解读等核心内容,并附有常见故障排查技巧,助力开发者高效实现电能表数据采集。

weixin_29182481的博客 311

Bochs源码分析 - 4: 使用ida来调试bochs

前言 bochs内部提供了一个调试器,但是这个命令行调试器相当难用,想找一个gui的debugger。第一次是在百度百科的bochs词条中介绍的peter-bochs-debugger调试器(java编写),但是后来发现ida也有一个bochs调试器,因为对ida比较熟悉,就选用此作为bochs调试器。 在配置过程中参考博客 https://blog.youkuaiyun.com/cssxn/article/details/90738498 中的配置,但是这是直接发布版本,拿源码编译...

WriteAnything_的博客 2754

Java 设计模式-命令模式(Command Pattern)

命令模式(Command Pattern)是对象的行为模式,其意图是将请求封装在对象的内部。 命令模式涉及的角色有: 客户端(Client )角色:负责创建一个具体的命令,并指定命令的接受者 命令(Command)角色:定义一个命令公共的操作接口 具体命令(Concrete Command)角色:定义一个命令的接收者和行为之间的耦合。实现命令接口的公共接口,调用接......

技术分享 261

HLM(多层线性模型)在stata中语句

在阅读CEPS中发现有些研究采用的是HLM模型,HLM简单来说用一个方程跑两个回归。举例,对学习成绩影响因素,不同层有不同的影响,如在个体层面上个体特征会对成绩产生影响,在学校层面学校排名等因素会对成绩产生影响,两种因素不在一个层面,每层造成的差异都不相同。 在找相关语句时候发现操作这个语句的软件大多是SPSS和HLM,对于stata操作者并不友好。因此,在有限资料中总结了HLM在stata中的语句,后面会附上学习视频和链接。 先放语句,后面对方程式一个大致解析。由于针对HLM有一本书的介绍,可能一篇文章无

weixin_44652251的博客 1万+

Java设计模式——命令模式【Command Pattern】

Java设计模式、命令模式、Command Pattern

scorpio的博客 1038

银河麒麟arm64 V10 SP1桌面系统高效部署onnxruntime推理环境实战

本文详细介绍了在银河麒麟arm64 V10 SP1桌面系统上高效部署onnxruntime推理环境的完整实战流程。从系统环境准备、关键依赖安装,到onnxruntime的安装验证,并以YOLOv5模型部署为例进行性能对比分析,提供了在国产化飞腾D2000平台上进行AI边缘推理的实用指南和避坑技巧。

ss78901的博客 636

electron:解决打包后报错Cannot find module ‘X‘ 运行报错各种模块缺失问题(解决electron build打包后运行应用报错启动失败或白屏,无论模块名称是什么都能解决!)

Electron app打包后启动报错:“Cannot find module 'X'”解决方案,electron-builder 打包出现 cannot find module,electron 打包后找不到module问题,electron打包运行白屏、Can not find modules ‘x‘,electron项目打包报错,electron打包后,点击生成的exe应用程序出现Cannot find module,解决electron-build打包后运行app报错:cannot find mod

✅ 精选推荐文章 4384

Java设计模式 十七 命令模式 (Command Pattern)

命令模式通过将请求封装成对象,解耦了请求的发送者和接收者,提供了灵活的执行、撤销和组合命令的能力。它在需要解耦请求和执行的场景中非常有用,尤其适用于GUI系统、任务调度、宏命令等应用场景。虽然命令模式可能增加系统的复杂度,但它在结构上更具可扩展性和灵活性,非常适合处理复杂的操作逻辑。

空 747

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

Java设计模式之《命令模式》

命令模式是一种行为设计模式,它将请求封装成独立对象,实现请求发出者与执行者的解耦。该模式包含命令接口、具体命令、接收者、调用者和客户端五个角色。典型应用场景包括任务调度、数据库操作和餐厅点餐等。优点在于解耦彻底、支持撤销/队列功能,但会增加类的数量。通过将"执行动作"封装为命令对象,使系统更灵活,但需权衡复杂度。

weixin_50055999的博客 1489

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

JAVA设计模式之 命令模式【Command Pattern】

一、概述     命令模式可以将请求发送者和接收者完全解耦,发送者与接收者之间没有直接引用关系,发送请求的对象只需要知道如何发送请求,而不必知道如何完成请求。核心在于引入了命令类,通过命令类来降低发送者和接收者的耦合度,请求发送者只需指定一个命令对象,再通过命令对象来调用请求接收者的处理方法,命令模式是一种对象行为型模式。 二、使用场景 1>、系统要求请求发送者和接收者的解耦

小吕丶Code阶区 2591

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

【Java 设计模式】行为型之命令模式

命令模式是一种行为型设计模式,用于将请求封装为对象,使得可以参数化客户端对象,并且能够排队、记录请求,以及支持撤销操作。命令模式的核心思想是将请求发送者和接收者解耦,通过命令对象来封装请求。命令对象包含了执行请求的方法,通过这种方式实现了请求的发起和执行的解耦。命令模式通常包含四个主要角色:命令(Command)、具体命令(Concrete Command)、命令发送者(Invoker)、命令接收者(Receiver)。声明了执行请求的接口实现了命令接口,对具体的请求进行了封装。

好久不见的流星 2033

【设计模式】Java设计模式 - 命令模式

命令模式(Command Pattern)是一种数据驱动的设计模式,它属于行为型模式。请求以命令的形式包裹在对象中,并传给调用对象。调用对象寻找可以处理该命令的合适的对象,并把该命令传给相应的对象,该对象执行命令。

qq_43843951的博客 903

设计模式(Design Pattern) - 行为型模式(Behavioral Pattern) - 命令模式(Command) - Java实现

设计模式(Design Pattern) - 行为型模式(Behavioral Pattern) - 命令模式(Command) 目的:达到命令的发出者和执行者之间解耦,实现请求和执行分开。一、说明: 1、Command 命令(接口); 2、Receiver 命令接收者; 3、MyCommand 命令.实现类; 4、Invoker 命令发送者。二、Java实现,代码如下: 1、Comm

Z 392

Java设计模式——命令模式(Command Pattern)

命令模式将一个请求封装为一个对象,从而使你可用不同的请求把客户端参数化;对请求排队或记录请求日志,以及支持可撤销的操作。这种模式允许你将发出请求的责任和执行请求的责任分割开。

weixin_43841461的博客 1323

java设计模式(十五)命令模式(Command Pattern)

命令模式(Command Pattern)的模式介绍、应用场景说明,优缺点的展示以及代码示例的讲解。

weixin_70044963的博客 638

Java设计模式之命令模式

Java设计模式之命令模式1. 命令模式概述2. 命令模式实现 1. 命令模式概述 1.命令模式(Command Pattern):在软件设计中,我们需要向部分对象发送请求,但并不知道请求的接收者是谁,也不知道被请求的操作是哪个,我们在程序运行时指定了具体的请求接收者,此时,可以使用命令模式来进行设计。 2.独特的模式植入请求发送者与请求接收者之间的相互连接,使对象的联系更加灵活,实现解耦合。 3.在一个单独的模式中,对象表达一个请求封装为一个也支持可撤销的操作。 4.通俗易懂的理解:将军发布命令,将军角色

靖节先生的博客 1180

Java设计模式-命令模式

本文介绍了命令模式的概念及其在Java中的实现。我们了解了命令模式与其他设计模式的区别,并通过示例代码演示了如何使用Java编程语言实现该模式。此外,我们还讨论了命令模式的优缺点和适用场景。命令模式是一种强大的设计模式,通过将请求封装为对象,使得系统更加灵活、可扩展和可维护。在适当的场景下,合理应用命令模式将会极大地提高软件系统的质量和可靠性。通过本文的介绍,相信读者对命令模式有了更深入的理解,并能够灵活运用它来解决实际问题。

小薯条的博客 927

java设计模式之命令模式

命令模式(Command Pattern)是一种数据驱动的设计模式,它属于行为型模式。请求以命令的形式包裹在对象中,并传给调用对象。调用对象寻找可以处理该命令的合适的对象,并把该命令传给相应的对象,该对象执行命令。 模式介绍: 意图:将一个请求封装成一个对象,从而可以用不同的请求对客户进行参数化。 主要解决:在软件系统中,行为请求者雨行为实现者通常是一种紧耦合的关系,但某些场合,比如需要对行为进行记录、撤销或重做、事物等处理时,这种无法抵御变化的紧耦合的设计就不太合适。 如何解决:通过调用者调用接收

li_w_ch的博客 275
上一篇: Java 设计模式 之 克隆模式
下一篇: Java 设计模式 之 组合模式
verejava
博客等级 码龄8年 39粉丝 203原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值