频道栏目
首页 > 程序开发 > 软件开发 > Java > 正文
java设计模式 命令模式
2017-06-07 10:34:58         来源:lyl0724的博客  
收藏   我要投稿
命令模式

请求作为命令包装在一个对象下,并传递给调用器对象。 调用者对象查找可以处理此命令的适当对象,并将命令传递到执行命令的相应对象。

实现

创建了一个作为命令的接口- Order,同时也创建了一个Stock类作为请求。 有具体的命令类BuyStock和SellStock实现Order接口将做实际的命令处理。 将创建一个类Broker作为调用器对象。它可以接收和下订单,Broker对象使用命令模式来标识哪个对象,并根据命令类型执行哪个命令。

代码

package com.test;

import java.util.ArrayList;

import java.util.List;

//第1步,创建一个命令接口

interface Order {

void execute();

}

// 第2步,创建一个请求对象

class Stock {

private String name = "ABC";

private int quantity = 10;

public void buy() {

System.out.println("Stock [ Name: " + name + ", Quantity: " + quantity + " ] bought");

}

public void sell() {

System.out.println("Stock [ Name: " + name + ", Quantity: " + quantity + " ] sold");

}

}

// 第3步,创建实现Order接口的具体类

class BuyStock implements Order {

private Stock abcStock;

public BuyStock(Stock abcStock) {

this.abcStock = abcStock;

}

public void execute() {

abcStock.buy();

}

}

class SellStock implements Order {

private Stock abcStock;

public SellStock(Stock abcStock) {

this.abcStock = abcStock;

}

public void execute() {

abcStock.sell();

}

}

// 第4步,创建命令调用程序类

class Broker {

private List orderList = new ArrayList();

public void takeOrder(Order order) {

orderList.add(order);

}

public void placeOrders() {

for (Order order : orderList) {

order.execute();

}

orderList.clear();

}

}

public class Test {

public static void main(String[] args) {

Stock abcStock = new Stock();

BuyStock buyStockOrder = new BuyStock(abcStock);

SellStock sellStockOrder = new SellStock(abcStock);

Broker broker = new Broker();

broker.takeOrder(buyStockOrder);

broker.takeOrder(sellStockOrder);

broker.placeOrders();

}

}

运行结果:

Stock [ Name: ABC, Quantity: 10 ] bought

Stock [ Name: ABC, Quantity: 10 ] sold

点击复制链接 与好友分享!回本站首页
上一篇:java学习路线及书籍下载
下一篇:Error:Unable to find method 'org.gradle.api.tasks.TaskInputs.file(Ljava/lang/Object;)Lorg/gradle/api
相关文章
图文推荐
点击排行

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站