【问题标题】:Is it ok to create a wrapper for constructors? [closed]可以为构造函数创建包装器吗? [关闭]
【发布时间】:2013-10-23 22:39:50
【问题描述】:

我们公司正在讨论围绕构造函数构建包装器还是直接使用构造函数更好。 那么这个可以用吗?

public function createUser($number, $firstname, $lastname) {
        return new User($number, $firstname, $lastname);
    }

例子:

$user = $this->createUser($number, $resultList->firstname, $resultList->lastname);

$user = new User($number, $firstname, $lastname);

【问题讨论】:

  • 是的,实际上有多种设计模式依赖于这种技术。
  • factory pattern?你在讨论设计模式是的
  • Zend Framework 2 正在使用这个 :-) 他们以我几乎喜欢的方式实现了 IoC - 使用服务定位器满足的构造函数依赖注入,您可以为此编写工厂类你的 constructor wrappers (或者只是为了同样的目的使用闭包)。所以,是的,没关系,直到你误用或过度使用它来做其他事情......
  • 在实践中(耦合、可测试性等),内部工厂方法和使用 new 运算符之间没有区别——实际上你只是在推迟它。这并不是说它们没有用——我经常使用它们将通用组件注入到创建的对象中,因此我可以保持 arg 列表干净以获取“真实”参数(例如 3v4l.org/k7P68)。然而,这主要是干燥和可读性。但是内部工厂方法(3v4l.org/KReul - 您似乎在上面显示的内容)和外部工厂对象(3v4l.org/RMpHZ)之间存在很大差异。

标签: php architecture constructor


【解决方案1】:

虽然我不确定您的示例是否理想,但您绝对可以将构造函数包装在不同的函数中。

This is a great read 确实使用包装器来创建真正有用的设计模式。

注意factory 模式和singleton 都使用这种技术。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-06-30
    • 1970-01-01
    • 2017-11-13
    • 1970-01-01
    • 2021-08-30
    • 2011-04-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多