您的位置:首页 > 其它

设计模式之三——策略模式(泡妞讲策略模式)

2008-12-20 10:50 507 查看
很多有关策略模式的例子都很单调,很理论化,不容易懂,使很多程序员望而却步。以下这个例子是从泡妞出发讲策略模式.

有些人泡妞很厉害,每天换女朋友,有些人不懂女人心,看着人家换女朋友,其实泡妞也要有策略的。

首先我们先写一个泡妞的类paoliu.php

<?php

/**

* 泡妞策略V1.0版

* email:hjwtp2005@qq.com

* url:www.emtit.com

*/

include 'strategy.php';

include 'pola.php';

include 'wenyou.php';

include 'langman.php';

include 'learn.php';

class paoliu {

private $strategy;//泡妞的策略

/**

* 传入具体的策略对像,按不同类型的女孩子选择不同的策略

*

* @param unknown_type $strategy

* @return paoliu

*/

public function paoliu($mm,$type=''){

switch ($type){

case "温柔":

$this->strategy=new wenyou($mm);

break;

case "泼辣":

$this->strategy=new pola($mm);

break;

case "浪漫":

$this->strategy=new langman($mm);

break;

default:

$this->strategy=new learn($mm);

}

}

/**

* 根据具体的策略对像,调用其泡妞方法

*

*/

public function actionInterface(){

return $this->strategy->action();

}

}

?>

然后写一个泡妞策略的抽像类strategy.php

<?php

/**

* 泡妞策略抽像类

*

*/

abstract class strategy {

/**

* 抽像的泡妞行动

*

*/

abstract public function action();

}

?>

然后对每个不同类型的妞都写一个策略;
泼辣型pola.php

<?php

require_once ('strategy.php');

class pola extends strategy {

private $mm;

public function pola($mm){

$this->mm=$mm;

}

public function action(){

echo $this->mm."是泼辣类型的,要感化她<br>";

}

}

?>

温柔型wenyou.php

<?php

require_once ('strategy.php');

class wenyou extends strategy {

private $mm;

public function wenyou($mm){

$this->mm=$mm;

}

public function action(){

echo $this->mm."是温柔类型的,要关心她<br>";

}

}

?>

浪漫型langman.php

<?php

require_once ('strategy.php');

class langman extends strategy {

private $mm;

/**

* 初始化类型MM

*

* @param unknown_type $mm

*/

public function langman($mm){

$this->mm=$mm;

}

public function action(){

echo $this->mm."浪漫类型的,带她去看日出!<br>";

}

}

?>

如果不知道什么类型呢?怎么办?也有一个策略

就是去学一种learn.php

<?php

require_once ('strategy.php');

class learn extends strategy {

private $mm;

/**

* 初始化类型MM

*

* @param unknown_type $mm

*/

public function learn($mm){

$this->mm=$mm;

}

public function action(){

echo $this->mm."是什么类型的都不知道怎么泡呀?去www.emtit.com看一下吧!<br>";

}

}

?>

策略模式是一种定义一系列算法的方法,所有这些算法都是完成相同的工作(就像泡妞都是完成追女孩子的工作),只是实现不同,它可以以相同的方式调用所有的算法,减少各种算法类与使用权用算法类之间的耦合。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: