您的位置:首页 > 其它

策略模式

2011-09-19 18:09 92 查看
策略模式是相对比较简单的设计模式,也是用得比较多的策略模式。形象点说,且大多数的都这样解释,方便为了很方便的添加其他的算法。其实策略模式确实这样子。它很好的符合了面向对象设计的对扩展开发,对修改闭合的原则。下面是为自己设计的一个例子进行说明!

类图



【代码】

<?php

interface Salary {

public function caculate ( );
}

class EnginerSalary implements Salary {

public function caculate ( ) {

//TODO 具体实现的过程
}
}

class DesignerSalary implements Salary {

public function caculate ( ) {

//TODO 具体实现的过程
}
}

class ManagerSalary implements Salary {

public function caculate ( ) {

//TODO 具体实现的过程
}
}

class Context {

private $_salary;

function __construct ( Salary $_salary ) {

$this->_salary = $_salary;
}

function contextCaculate ( ) {

$this->_salary->caculate ();
}
}

//example

class client {

function main ( ) {

$enginer = new EnginerSalary ();
$c = new Context ( $enginer );
$c->contextCaculate ();

$designer=new DesignerSalary();
$c=new Context($Designer);
$c->contextCaculate();

$manager=new ManagerSalary();
$c=new Context($manager);
$c->contextCaculate();

}
}


知道工厂方法的童鞋可能会发现,策略模式跟工厂方法的大框架比较像。感兴趣的童鞋可以分析分析他们。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: