php,java实现命令模式
2017-03-26 11:04
363 查看
将调用者和实际实现者分开,减少耦合,通过中间类来关联两者
类图如下:
java实现
逻辑抽象类
逻辑实现类
命令抽象类
命令实现类
中转调度类
php实现
类图如下:
java实现
逻辑抽象类
public abstract class AbsReceiver { public abstract void doSomething(); }
逻辑实现类
public class RealReceiver1 extends AbsReceiver { @Override public void doSomething() { } }
public class RealReceiver2 extends AbsReceiver { @Override public void doSomething() { } }
命令抽象类
public abstract class AbsCommand { protected AbsReceiver receiver; public AbsCommand(AbsReceiver receiver){ this.receiver = receiver; } public abstract void exe(); }
命令实现类
public class RealCommand1 extends AbsCommand { public RealCommand1() { super(new RealReceiver1()); } @Override public void exe() { receiver.doSomething(); } }
ublic class RealCommand2 extends AbsCommand { public RealCommand2(){ super(new RealReceiver2()); } @Override public void exe() { } }
中转调度类
public class Invoke { private AbsCommand command; public void setCommand(AbsCommand command){ this.command = command; } public void action(){ command.exe(); } }
php实现
abstract class AbsReceiver { public abstract function doSomething(); } class RealReceiver1 extends AbsReceiver { public function doSomething() { echo 'RealReceiver1'; } } class RealReceiver2 extends AbsReceiver { public function doSomething() { echo 'RealReceiver2'; } } abstract class Command { protected $receiver; public function __construct(AbsReceiver $receiver) { $this->receiver = $receiver; } public abstract function exe(); } class RealCommand1 extends Command { public function __construct() { parent::__construct(new RealReceiver1); } public function exe() { $this->receiver->doSomething(); } } class RealComand2 extends Command { public function __construct() { parent::__construct(new RealReceiver2); } public function exe() { $this->receiver->doSomething(); } } class Invoke { private $command; public function __set($name,$value) { if('command' == $name) { $this->command = $value; } } public function __get($name) { if('command' == $name) { return $this->command; } } public function action() { $this->command->exe(); } } $realCommand = new RealCommand1; $invoke = new Invoke; $invoke->command = $realCommand; $invoke->action();
相关文章推荐
- Java设计模式菜鸟系列(七)命令模式建模与实现
- 用Java 8 Lambda表达式实现设计模式:命令模式
- php,java实现中介者模式
- php、java实现状态模式
- php,java实现观察者模式
- Java 实现命令(Command)模式
- php、java实现单例模式
- php,java实现装饰者模式
- php,java实现建造者模式
- php,java实现访问者模式
- 设计模式之第14章-命令模式(Java实现)
- 【GOF23设计模式】_命令模式_数据库事务机制底层架构实现_撤销和回复JAVA246
- 学习php设计模式 php实现命令模式(command)
- php,java实现策略模式
- java设计模式_命令模式 两个不同风格的实现
- 用Java 8 Lambda表达式实现设计模式:命令模式
- 详解Java设计模式编程中命令模式的项目结构实现
- 命令模式和php实现
- php,java实现门面(外观)模式
- php,java实现组合模式