[置顶] 策略模式

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

类图

[置顶] 策略模式_第1张图片

【代码】

<?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();
	
	}
}

知道工厂方法的童鞋可能会发现,策略模式跟工厂方法的大框架比较像。感兴趣的童鞋可以分析分析他们。


你可能感兴趣的:(设计模式,算法,框架,function,manager,Class)