java设计模式之三命令模式

    Command命令模式: Command模式通过被称为Command的类封装了对目标对象的调用行为以及调用参数。将一个请求封装为一个对象,从而使你不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤销的操作。

在此写了7个java类来描述说明Command设计模式的实现方式;
1、 Control.java        命令控制者对象类  (命令控制器在这里至关重要,相当于遥控器的作用)
  2、 Tv.java             命令接收者对象类
  3、 Command.java        命令接口类
  4、 CommandChannel.java 频道切换命令类
  5、 CommandOff.java     关机命令类
  6、 CommandOn.java      开机命令类
  7、 CommandTest.java    带有main方法的测试类(命令发送者)

如下所示:

package lucene.kameilong.conmmand;
public class TV {
private int currentChanl = 0;

public void trunOn() {
System.out.println("TV is turnning on......");
}

public void trunOff() {
System.out.println("TV is turnning off......");
}

public void changeChanl(int chanl) {
this.currentChanl = chanl;
System.out.println("Now TV chanle is " + currentChanl + "......");
}
}
 
package lucene.kameilong.conmmand;

public class OnCommand implements Command {

	private TV myTv;

	public OnCommand(TV tv) {
		this.myTv = tv;
	}

	public void excute() {
		myTv.trunOn();
	}

}
 


package lucene.kameilong.conmmand;

public interface Command {
	public void excute();
}

 

package lucene.kameilong.conmmand;

public class CommandTest {

	public static void main(String[] args) {
		TV myTv = new TV();
		OnCommand on = new OnCommand(myTv);
		OffCommand off = new OffCommand(myTv);
		ChangeCommand change = new ChangeCommand(myTv, 3);
		Control control = new Control(on, off, change);

		control.turnOn();
		control.chageChanl();
		control.turnOff();
	}

}
 
package lucene.kameilong.conmmand;

public class OffCommand implements Command {

	private TV myTv;

	public OffCommand(TV tv) {
		this.myTv = tv;
	}

	public void excute() {
		myTv.trunOff();
	}

}
 
package lucene.kameilong.conmmand;

public class ChangeCommand implements Command {

	private TV myTv;
	private int chanl;

	public ChangeCommand(TV tv, int chanl) {
		this.myTv = tv;
		this.chanl = chanl;
	}

	public void excute() {
		myTv.changeChanl(chanl);
	}

}
 
package lucene.kameilong.conmmand;

public class Control {
	private Command on, off, change;

	public Control(OnCommand on, OffCommand off, ChangeCommand change) {
		this.on = on;
		this.off = off;
		this.change = change;
	}

	public void turnOn() {
		on.excute();
	}

	public void turnOff() {
		off.excute();
	}

	public void chageChanl() {
		change.excute();
	}
}
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值