设计模式之三——策略模式(泡妞讲策略模式)
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>";
}
}
?>
策略模式是一种定义一系列算法的方法,所有这些算法都是完成相同的工作(就像泡妞都是完成追女孩子的工作),只是实现不同,它可以以相同的方式调用所有的算法,减少各种算法类与使用权用算法类之间的耦合。
有些人泡妞很厉害,每天换女朋友,有些人不懂女人心,看着人家换女朋友,其实泡妞也要有策略的。
首先我们先写一个泡妞的类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>";
}
}
?>
策略模式是一种定义一系列算法的方法,所有这些算法都是完成相同的工作(就像泡妞都是完成追女孩子的工作),只是实现不同,它可以以相同的方式调用所有的算法,减少各种算法类与使用权用算法类之间的耦合。
相关文章推荐
- 设计模式之策略模式
- JAVA设计模式-策略模式应用实例
- JAVA设计模式-策略模式应用实例
- 设计模式:策略模式(学习笔记)
- JAVA设计模式-策略模式应用实例
- 设计模式 状态模式 策略模式 观察者模式 命令模式 中介者模式
- 设计模式之策略模式
- C# 设计模式----策略模式
- 23种设计模式(13)-策略模式
- 设计模式-策略模式
- 设计模式之策略模式
- Java设计模式(十三)----策略模式
- PHP设计模式-策略模式Strategy
- PHP设计模式——策略模式
- 转:多篇文章中的设计模式-------策略模式
- Head First 设计模式(1)- 策略模式 笔记
- 设计模式C++实现(2)——策略模式
- 【Java设计模式】(2)策略模式Strategy
- Java设计模式透析之 —— 策略(Strategy)