PHP草根论之设计模式-命令模式
2014-10-15 17:49
441 查看
关于模式本身的概念,请参考网上其它文章
此处只讨论在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();
明白了么? 很纠结? 我学习的时候也很纠结. 这业务得复杂到什么程度才能用到这些类啊
此处只讨论在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();
明白了么? 很纠结? 我学习的时候也很纠结. 这业务得复杂到什么程度才能用到这些类啊
相关文章推荐
- php设计模式 Command(命令模式)
- Php设计模式之【命令模式Command Pattern】
- PHP设计模式-命令模式
- PHP草根论之设计模式-备忘录模式
- PHP草根论之设计模式-访问者模式
- php设计模式 Command(命令模式)
- PHP设计模式之命令模式的深入解析
- php设计模式之命令模式使用示例
- PHP设计模式漫谈之命令模式
- PHP草根论之设计模式-解释器模式
- php设计模式 Command(命令模式)
- php设计模式之命令模式的应用详解
- PHP设计模式漫谈之命令模式
- php设计模式之命令模式使用示例
- php设计模式 Command(命令模式)
- php设计模式 Command(命令模式)
- php设计模式之命令模式的应用详解
- php设计模式之命令模式
- PHP草根论之设计模式-策略模式
- PHP设计模式:行为型之命令(Command)