【发布时间】:2014-03-25 06:26:13
【问题描述】:
如果这个问题已经回答了,请告诉我;我只能找到通常的“什么是公共/私人/受保护”问题!
所以这是我的问题: 何时使用私有方法,何时使用公共方法创建新类?
例子:
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 非常简单。
感谢您的任何回答!
【问题讨论】:
-
如果您不需要重用其他类的方法,并且方法访问私有或仅对所属类可见的变量,则应使用私有方法。跨度>
-
@Ted 委派最常见的用途不是重用方法(这些方法应该只是公共的,可能是辅助类中的公共静态),而是能够在运行时交换实现。
-
是的,但是在效果与所属类紧密耦合的情况下,交换也可以经常通过接口和继承来管理。 Java 使用对象委托来处理方法与所属类的耦合不是很紧密的大多数事情,而 C# 则更谨慎地使用它。其中一些是我认为的程序员偏好。但是如果您需要访问私有变量,我不建议您委托给其他对象,除非您确实必须这样做,然后您可以将值作为参数传递。
-
此外,当您想将业务逻辑从 GUI 中拉出并进行整理时,委托给另一个类是一个好主意。见:en.wikipedia.org/wiki/Single_responsibility_principle
标签: php oop design-patterns architecture testunit