美文网首页
策略模式

策略模式

作者: 零一间 | 来源:发表于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