组合功能的好处

时间:2014-01-29 05:03:02

标签: php oop composition single-responsibility-principle

我有四个方法,可以改变输入并返回输出。

class edit
{

    function a($input) { return $input + 4; }
    function b($input) { return $input - 2; }
    function c($input) { return $input * 10; }
    function d($input) { return $input / 8; }

}

巧合的是,这些方法需要一个接一个地调用,前一个返回的输出作为下一个的输入。

我们可以通过多种方式处理这个过程。

$handle = new edit();

$output = $handle->a(8);
$output = $handle->b($output);
$output = $handle->c($output);
$output = $handle->d($output);

在类中创建另一个方法来处理整个过程。

function all($input)
{
    $output = $this->a($input);
    $output = $this->b($output);
    $output = $this->c($output);
    $output = $this->d($output);
    return $output;
}

$handle = new edit(8);

$handle->all();

这些都可以完成同样的任务。

但是,我最近了解了合成功能,这对我来说是完美的。

(注意这里的示例我已经从移动了方法a,b,c,d ,并将它们称为函数在一个程序庄园中,我无法使这个组合功能 OOP友好,请原谅我。)

function compose($f,$g,$h,$i) 
{
    return function($x) use ($f, $g, $h, $i) { return $f($g($h($i($x)))); };
}

$comp = compose('a', 'b','c','d');
$result = $comp(8); 

说了这么多,我想知道用组合功能实现这项任务的好处?

我只能注意到最小的改进,因为我们不必将输入传递四次,只需一次。

在我最近的研究中,我遇到过多位软件工程师,他们正在讨论功能编程的优秀程度。

我觉得我错过了什么?或者是我提到的唯一改进?

PS - 我使用的语言是PHP,我在这里给出的方法/功能只是简单的例子来说明这一点。我也在努力遵守 SOLID 原则。

感谢。

0 个答案:

没有答案