关于模式本身的概念,请参考网上其它文章
此处只讨论在PHP实际开发过程中的应用
草根观点:
1.不要纠结命令/执行 这些概念
2.本质上是将 一组对象(多个类),中的共通接口独立出来,用一个单独的类来对接
3.为了表明具体的对象有这些共通方法,你得定义一个接口
//名字随便起的
interface OperationsInterface{
//定义了两个共通的接口
public function actionA();
public function actionB();
}
//定义X业务逻辑类
class LogicalX implements OperationsInterface {
public function actionA(){
//具体执行A操作
}
public function actionB{
//具体执行B操作
}
}
//定义Y业务逻辑类 LogicalY,略
4.我们为了actionA,actionB定义一个单独的操作类, 类中定义了一个方法,用来 记录 具体的执行对象,同时定义了每一个共通接口
class OperationsM{
private $_logical; //具体的业务逻辑对象
//记录具体的业务对象
public function setLogical(OperationsInterface $logical){
$this->_logical=$logical;
}
//实现操作A
public function actionA(){
$this->_logical->actionA();
}
//实现操作B
public function actionB(){
$this->_logical->actionB();
}
}
5.如果你需要另一组操作集合,也可以定义 OperationsN,... 其它的操作集合类.
6.如果有两个以上的操作集合类,那你还得为他们定义 父类/接口, 用来定义 那个set操作. 我感觉 父类比较好. 当然了,如果操作集体类的个数较少,直接写也成. 这种事情我们常干.
7.控制逻辑中可以如下 书写代码段了
$logical=new LogicalX;
$operation=new OperationsM;
$operation->setLogical($logical);
$operation->actionA();
$operation->actionB();
明白了么? 很纠结? 我学习的时候也很纠结. 这业务得复杂到什么程度才能用到这些类啊