策略模式
2011-09-19 18:09
92 查看
策略模式是相对比较简单的设计模式,也是用得比较多的策略模式。形象点说,且大多数的都这样解释,方便为了很方便的添加其他的算法。其实策略模式确实这样子。它很好的符合了面向对象设计的对扩展开发,对修改闭合的原则。下面是为自己设计的一个例子进行说明!
类图
![](http://hi.csdn.net/attachment/201109/19/0_1316426840xj8G.gif)
【代码】
知道工厂方法的童鞋可能会发现,策略模式跟工厂方法的大框架比较像。感兴趣的童鞋可以分析分析他们。
类图
![](http://hi.csdn.net/attachment/201109/19/0_1316426840xj8G.gif)
【代码】
<?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(); } }
知道工厂方法的童鞋可能会发现,策略模式跟工厂方法的大框架比较像。感兴趣的童鞋可以分析分析他们。