OOP:私有方法与新类

时间:2014-02-23 19:33:29

标签: php oop design-patterns architecture testunit

如果这个问题已经回答,请告诉我;我只能找到通常的“什么是公共/私人/受保护”的问题!

所以这是我的问题: 我何时使用私有方法?何时使用公共方法创建新类?

示例:

class MyActualWorker {
    public function work() {
        $this->helperMethod1();
        $this->helperMethod2();
    }

    private function helperMethod1() {
        ...
    }

    private function helperMethod2() {
        ...
    }
}

替代:

class MyActualWorker {

    public function __construct() {
        $this->helperObject = new HelperObject();
    }

    public function work() {
        $this->helperObject->helperMethod1();
        $this->helperObject->helperMethod2();
    }
}

我何时使用第一个例子,第二个例子? 对我来说,第二个例子的主要优点是UnitTesting非常简单。

我很感激任何答案!

1 个答案:

答案 0 :(得分:1)

通常,你使用第一个。

"Delegation Pattern"(使用子对象)是一种很好的方法,可以让你在运行时可以换出不同的方法实现 - 但如果你不需要它,那只是不必要的开销。

另一种常见的情况是我称之为“库方法”,即没有绑定到任何对象但是无状态的方法,只是执行一些计算。这些可以被删除public static并移动到抽象类。你不会为那种关系创建对象(只是使用静态方法的类),所以它与你的例子完全不同。