避免重复算法

时间:2014-05-07 11:37:13

标签: php

让我们想象一下这个课程:

Class Foo {

   function1($p1, $p2)
  {
    do_common_thing1()
    specific_1($p1)
    specific_2($p2)
    do_common_thing2()
  }
  function2($p1)
  {
    do_common_thing1()
    specific_3($p1)
    do_common_thing2()
  }
  /**   ...    */
  function99()
  {
    do_common_thing1()
    specific_999()
    do_common_thing2()
  }
}

如何编写类以避免重复每个方法中的常用功能? 我听说过模板方法模式,但它似乎不适用于我的所有方法

1 个答案:

答案 0 :(得分:1)

考虑一下:

protected function doWithCommon($func) {
    do_common_thing1();
    $func();
    do_common_thing2();
}

public function func1() {
    $this->doWithCommon(function() {
        // specific
    });
}