`
剑锋凛冽
  • 浏览: 75253 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

设计模式——命令模式

 
阅读更多

命令模式的本质是将对同一对象的不同操作进行不同封装,但同时又通过接口,提供给调用者一个统一的使用方式,从事隔离调用者对对象操作的复杂逻辑处理。在命令中可以又可以通过接口或类来通过自身持有的接受者来讲操作转移到接受者来负责具体的操作实现。

参见如下代码

package pattern;

public class CommandDemo {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int[] target={1,2,3,4,5};
		
		Executor.executeCommand(target,new AddCommand());
		Executor.executeCommand(target, new StringCommand());
		
		Executor.executeAction(new AddCommand(), new Receiver());
		Executor.executeAction(new StringCommand(), new Receiver());
		
	}

}
class Executor{
	
	public static void executeCommand(int[] target,Command command){
		command.process(target);
	}
	
	public static void executeAction(Command command,Receiver receiver){
		command.processAction(receiver);
	}
}
interface Command{
	
	void process(int[] target);
	
	void processAction(Receiver receiver);
	
}
class Receiver{
	
	public void doAction(String action){
		System.out.println("执行操作"+action);
	}
}
class AddCommand implements Command{

	@Override
	public void process(int[] target) {
		// TODO Auto-generated method stub
		int sum=0;
		for(int num:target){
			sum+=num;
		}
		System.out.println("AddCommand执行结果"+sum);
	}

	@Override
	public void processAction(Receiver receiver) {
		// TODO Auto-generated method stub
		System.out.println("AddCommand发出命令");
		receiver.doAction("add");
		System.out.println("AddCommand执行完成");
	}
	
}
class StringCommand implements Command{

	@Override
	public void process(int[] target) {
		// TODO Auto-generated method stub
		StringBuilder sb=new StringBuilder();
		for(int num:target){
			sb.append(num);
		}
		System.out.println("StringCommand执行结果"+sb.toString());
	}

	@Override
	public void processAction(Receiver receiver) {
		// TODO Auto-generated method stub
		System.out.println("StringCommand发出命令");
		receiver.doAction("string");
		System.out.println("StringCommand执行完成");
	}
	
}
 
分享到:
评论

相关推荐

    设计模式——11职责链模式与命令模式.pptx

    设计模式——11职责链模式与命令模式.pptx

    详解Java设计模式——命令模式

    命令模式是Java设计模式中的一种常见模式,主要用于将命令的发出者和执行者之间解耦,实现请求和执行分开。 命令模式的定义是将一个请求封装成一个对象,从而使您可以用不同的请求对客户进行参数化。它的主要目的是...

    设计模式——GFour

    《设计模式——GFour》是一本深受IT从业者喜爱的经典书籍,尤其在C++开发者中具有广泛影响力。设计模式是软件工程领域中的一种最佳实践,它总结了在特定情境下解决问题的常见方法,使得代码可读性更强,复用性更高,...

    设计模式——基于C#的工程化实现及扩展

    ### 设计模式——基于C#的工程化实现及扩展 #### 概述 本书旨在向读者展示如何利用C# 2.0语法有效地实现和应用设计模式,使其不仅仅局限于简单的例子,而是能够在实际工程项目中发挥重要作用。全书分为七个部分,...

    设计模式——原版的设计模式

    命令模式将请求封装为一个对象,从而使你可用不同的请求对客户进行参数化,对请求排队或记录请求日志,以及支持可撤销的操作;解释器模式定义了一个语言的文法,并提供了它的解释器;迭代器模式提供了一个方法来顺序...

    设计模式之(命令+责任链)

    本文将深入探讨两种重要的设计模式——命令模式和责任链模式,并通过Java代码实例来阐述它们的应用和实现。 首先,我们来看**命令模式**。命令模式的核心思想是将请求封装为一个对象,从而可以将命令参数化、支持...

    设计模式作业——用命令模式java语言编写的烧烤店

    在这个“设计模式作业——用命令模式java语言编写的烧烤店”项目中,我们将探讨如何运用命令模式来构建一个模拟烧烤店的系统。命令模式是一种行为设计模式,它将请求封装为一个对象,使得我们可以参数化不同的请求、...

    设计模式——可复用面向对象软件的基础(1)

    在《设计模式——可复用面向对象软件的基础》这本书中,作者Erich Gamma、Richard Helm、Ralph Johnson和John Vlissides(合称GoF)首次提出了23种面向对象设计模式。这些模式涵盖了不同设计场景,如创建型模式、...

    设计模式之美——教你写出高质量代码

    "设计模式之美——教你写出高质量代码"这个主题旨在帮助开发者更好地理解和应用设计模式,从而提升代码的质量和可维护性。设计模式不仅对面试有所帮助,也是职场发展中的必备技能,无论你使用哪种开发语言。 设计...

    设计模式——JAVA.docx

    ### JAVA设计模式总结之23种设计模式及六大原则 #### 一、设计模式之六大原则 ##### 总原则:开闭原则(Open Close Principle) 开闭原则是设计模式中最核心的原则之一,它强调的是软件实体(类、模块、函数等)...

    Python设计模式之命令模式原理与用法实例分析

    本文实例讲述了Python设计模式之命令模式原理与用法。...设计模式——命令模式 命令模式(Command Pattern):将请求封装成对象,从而使可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤消的操作.

    设计模式可复用面向对象软件的基础.zip

    书名: 设计模式可复用面向对象软件的基础 英文原书名: Design Patterns:Elements of Reusable Object-Oriented software 作者: Erich Gamma 等 译者: 李英军 马晓星 蔡敏 刘建中 书号: 7-111-07575-7 页码: 254 定价...

    java设计模式——告诉新手一些不知道的东西

    12. 命令模式:将请求封装为一个对象,以便使用不同的请求、队列请求,或者支持可撤销的操作。 学习和理解这些设计模式是提升编程技能的关键步骤。它们不仅提供了解决复杂问题的蓝图,还能帮助我们写出更清晰、更...

    23种 设计模式---面向对象的基本原则

    - 命令模式(Command):将一个请求封装为一个对象,以便使用不同的请求、队列或者日志请求,支持可撤销的操作。 - 解释器模式(Interpreter):给定一种语言,定义它的文法表示,并提供一个解释器来处理该语言中...

    《java设计模式》课后习题模拟试题解答——刘伟.zip

    本资料“《java设计模式》课后习题模拟试题解答——刘伟.zip”主要涵盖了Java设计模式的学习与应用,特别是针对刘伟教授的相关课程的课后习题及模拟试题的解答。 设计模式分为三大类:创建型、结构型和行为型模式。...

Global site tag (gtag.js) - Google Analytics