(六)面向对象的设计原则之二
2015-08-08 23:36
615 查看
一.简介:
命令模式:命令模式分为“命令的请求者”和“命令的实现者”。使得命令的请求和实现完成了解耦。
二.示例:
<?php
/*
* 模拟服务员与厨师
*/
class MealCommand implements Command{
private $cook;
public function __construct(cook $cook){
$this->cook = $cook;
}
public function execute(){
$this->cook->meal();
}
}
class DrinkCommand implements Command{
private $cook;
public function __construct(cook $cook){
$this->cook = $cook;
}
public function execute(){
$this->cook->drink();
}
}
/*
* 模拟类
*/
class cookControl{
private $mealCommand;
private $drinkCommand;
public function addCommand(Command $mealCommand,Command $drinkCommand){
$this->mealCommand = $mealCommand;
$this->drinkCommand = $drinkCommand;
}
public function callMeal(){
$this->mealCommand->execute();
}
public function callDrink(){
$this->drinkCommand->execute();
}
}
$control = new cookControl();
$cook = new cook;
$mealCommand = new MealCommand($cook);
$drinkCommand = new DrinkCommand($cook);
$control->addCommand($mealCommand,$drinkCommand);
$control->callMeal();
$control->callDrink();
三.使用原则:
1.根据业务流程,提炼业务流程。一步步抽象直至‘恰当’。
2.职责分类需要注意。
命令模式:命令模式分为“命令的请求者”和“命令的实现者”。使得命令的请求和实现完成了解耦。
二.示例:
<?php
/*
* 模拟服务员与厨师
*/
class MealCommand implements Command{
private $cook;
public function __construct(cook $cook){
$this->cook = $cook;
}
public function execute(){
$this->cook->meal();
}
}
class DrinkCommand implements Command{
private $cook;
public function __construct(cook $cook){
$this->cook = $cook;
}
public function execute(){
$this->cook->drink();
}
}
/*
* 模拟类
*/
class cookControl{
private $mealCommand;
private $drinkCommand;
public function addCommand(Command $mealCommand,Command $drinkCommand){
$this->mealCommand = $mealCommand;
$this->drinkCommand = $drinkCommand;
}
public function callMeal(){
$this->mealCommand->execute();
}
public function callDrink(){
$this->drinkCommand->execute();
}
}
$control = new cookControl();
$cook = new cook;
$mealCommand = new MealCommand($cook);
$drinkCommand = new DrinkCommand($cook);
$control->addCommand($mealCommand,$drinkCommand);
$control->callMeal();
$control->callDrink();
三.使用原则:
1.根据业务流程,提炼业务流程。一步步抽象直至‘恰当’。
2.职责分类需要注意。
相关文章推荐
- 一个关于if else容易迷惑的问题
- PHP5.2.*防止Hash冲突拒绝服务攻击的Patch
- 深入理解PHP之匿名函数
- JSP/PHP基于Ajax的分页功能实现
- 关于PHP通过PDO用中文条件查询MySQL的问题。
- 什么是设计模式
- PHP数据库长连接mysql_pconnect的细节
- Php Installing An Expansion
- 一步一步跟我学易语言之第二个易程序菜单设计
- Lua编程示例(二):面向对象、metatable对表进行扩展
- C#中面向对象编程机制之多态学习笔记
- PHP+Apache在Windows 9x下的安装和配置
- IIS 6 的 PHP 最佳配置方法
- 安装Apache和PHP的一些补充
- Linux Apache+MySQL+PHP
- 建立Apache+PHP+MySQL数据库驱动的动态网站
- 浅谈Lua的面向对象特性
- Lua面向对象之类和继承浅析
- PHP 5.3.0 安装分析心得