一堆私人财产逐一执行

时间:2010-09-28 13:14:15

标签: php design-patterns

这是一个标志,这里需要一些设计模式吗?

/**
 * @return string
 */
public function filter($string)
{
    // underscored means private
    $this->_prepareSomething($string); 
    $this->_prepareSomething2();
    $this->_prepareSomething3();
    $this->_prepareSomething4();
    $this->_prepareSaveSomethingToFile();

    return $this->getFiltered();
}

2 个答案:

答案 0 :(得分:1)

这完全取决于可读性和正确的抽象级别。对于我作为读者,很难看到_prepare *函数之间交换了什么数据。而且,让我们假装它们是某种类型的计算,然后将一些数据保存到文件中将业务逻辑与持久性混合在一起。这看起来像混合了抽象级别。

此外,getFiltered()调用也令人困惑,因为它看起来像使用与原始函数类似的命名方案调用公共方法。

模式:有关组合方法模式说明,请参阅http://c2.com/ppr/wiki/WikiPagesAboutRefactoring/ComposedMethod.html,有关SLAP原则,请参阅http://www.markhneedham.com/blog/2009/06/12/coding-single-level-of-abstraction-principle/

答案 1 :(得分:0)

看起来您已经在实施Template Method pattern了。如果你的类有子类,可能需要覆盖该过程中的某些步骤,那么我会说你已经有效地设计了你的基类。