这是一个标志,这里需要一些设计模式吗?
/**
* @return string
*/
public function filter($string)
{
// underscored means private
$this->_prepareSomething($string);
$this->_prepareSomething2();
$this->_prepareSomething3();
$this->_prepareSomething4();
$this->_prepareSaveSomethingToFile();
return $this->getFiltered();
}
答案 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了。如果你的类有子类,可能需要覆盖该过程中的某些步骤,那么我会说你已经有效地设计了你的基类。