策略模式
作者:
零一间 | 来源:发表于
2017-08-09 08:52 被阅读32次<?php
header ( "Content-Type:text/html;charset=utf-8" );
/**
* 策略模式:
策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法独立于使用它的客户而独立变化;
适用场景:
1、多个类只区别在于表现行为不同,可以使用strategy(策略)模式,在操作时动态选择具体要执行的行为(算法、策略);
2、需要在不同情况下使用不同的策略(算法),或者策略还可能在未来用其它方式来实现;
3、对客户隐藏具体策略(算法)的实现细节,彼此完全独立;
模式分析:
策略模式与工厂模式均是扩展性好,策略模式主要解决的问题(适用场景):有多种策略可以选择,根据不同的情况选择不同的策略(算法),可以随意的增加策略,而不用去修改使用策略的中间模块。例如:工资计算,各层次计算工资公式(算法)不同,财务部门根据不同层次员工选择不同的计算公式;
*/
abstract class SalaryAbs {
abstract function calculate ();
}
/**
* h1级工资计算策略
*/
class H1_Salary extends SalaryAbs {
public function calculate () {
echo 'h1级工资计算!<br>';
}
}
/**
* h2级工资计算策略
*/
class H2_Salary extends SalaryAbs {
public function calculate () {
echo 'h2级工资计算!<br>';
}
}
/**
* h3级工资计算策略
*/
class H3_Salary extends SalaryAbs {
public function calculate () {
echo 'h3级工资计算!<br>';
}
}
class Accountant {
public static function getSalary( $salary){
$salaryObj=new $salary;
$salaryObj->calculate();
}
}
Accountant::getSalary('H1_Salary');
Accountant::getSalary('H2_Salary');
Accountant::getSalary('H3_Salary');
本文标题:策略模式
本文链接:https://www.haomeiwen.com/subject/vdlfrxtx.html
网友评论