php设计模式之号令模式
添加时间:2013-5-21 点击量:
号令模式:将一个恳求封装为一个对象,从而你可用不合的恳求对客户进行参数化;对恳求列队或记录恳求日记,以及支撑可撤销操纵。
号令类:
1.号令角色:声了然一个给所有具体号令类的抽象接口。这是一个抽象角色。
2.具体号令角色:定义一个接管者和行动之间的弱耦合;实现execute办法,负责调用接管的响应操纵。execute()办法凡是叫做履行办法
3.客户角色:创建一个具体号令对象并断定其接管者。
4.恳求者角色:负责调用号令对象履行恳求,相干的办法叫做步履办法。
5.接管者角色:负责具体实验和履行一个恳求。
感化:
1.抽象出待履行的动作以参数化对象。
2.在不合的时刻指定、分列和履行恳求。
3.支撑作废操纵
4.支撑批改日记
<?php
//号令接口
interface Command{
public function execute();
}
//具体号令
class ConcreteCommand implements Command{
private ¥_receiver;
public function __construct(¥receiver){
¥this->_receiver = ¥receiver;
}
public function execute(){
¥this->_receiver->action();
}
}
//接管者
class Receiver{
private ¥_name;
public function __construct(¥name){
¥this->_name = ¥name;
}
//步履办法
public function action(){
echo ¥this->_name.do action .<br/>;
}
}
//恳求者
class Invoker{
private ¥_command;
public function __construct(¥command){
¥this->_command = ¥command;
}
public function action(){
¥this->_command->execute();
}
}
//客户端
class Client{
public static function main(){
¥receiver = new Receiver(jaky);
¥command = new ConcreteeCommand(¥receiver);
¥invoker = new Invoker(¥command);
¥invoker->action();
}
}
Client::main();
?>
文艺不是炫耀,不是花哨空洞的文字堆砌,不是一张又一张的逆光照片,不是将旅行的意义转化为名牌包和明信片的物质展示;很多时候它甚至完全不美——它嘶吼、扭曲,它会痛苦地抽搐,它常常无言地沉默。——艾小柯《文艺是一种信仰》
号令模式:将一个恳求封装为一个对象,从而你可用不合的恳求对客户进行参数化;对恳求列队或记录恳求日记,以及支撑可撤销操纵。
文艺不是炫耀,不是花哨空洞的文字堆砌,不是一张又一张的逆光照片,不是将旅行的意义转化为名牌包和明信片的物质展示;很多时候它甚至完全不美——它嘶吼、扭曲,它会痛苦地抽搐,它常常无言地沉默。——艾小柯《文艺是一种信仰》
号令类:
1.号令角色:声了然一个给所有具体号令类的抽象接口。这是一个抽象角色。
2.具体号令角色:定义一个接管者和行动之间的弱耦合;实现execute办法,负责调用接管的响应操纵。execute()办法凡是叫做履行办法
3.客户角色:创建一个具体号令对象并断定其接管者。
4.恳求者角色:负责调用号令对象履行恳求,相干的办法叫做步履办法。
5.接管者角色:负责具体实验和履行一个恳求。
感化:
1.抽象出待履行的动作以参数化对象。
2.在不合的时刻指定、分列和履行恳求。
3.支撑作废操纵
4.支撑批改日记
<?php
//号令接口
interface Command{
public function execute();
}
//具体号令
class ConcreteCommand implements Command{
private ¥_receiver;
public function __construct(¥receiver){
¥this->_receiver = ¥receiver;
}
public function execute(){
¥this->_receiver->action();
}
}
//接管者
class Receiver{
private ¥_name;
public function __construct(¥name){
¥this->_name = ¥name;
}
//步履办法
public function action(){
echo ¥this->_name.do action .<br/>;
}
}
//恳求者
class Invoker{
private ¥_command;
public function __construct(¥command){
¥this->_command = ¥command;
}
public function action(){
¥this->_command->execute();
}
}
//客户端
class Client{
public static function main(){
¥receiver = new Receiver(jaky);
¥command = new ConcreteeCommand(¥receiver);
¥invoker = new Invoker(¥command);
¥invoker->action();
}
}
Client::main();
?>