0

我的一些 PHP 域对象具有应该从对象外部设置的属性,但只能由某些客户端对象设置。我该如何执行此操作?

我在课堂上使用 setter,如果我能找到一种方法来区分不同的调用者,我相信我可以在 setter 中做一些检查。不过,这似乎有点令人费解。我觉得我违反了 OO 设计原则(也许是“告诉,不要问”?)。

我想这是一个相当常见的场景。我错过了什么?

4

1 回答 1

0

在这种情况下,我觉得这是一个糟糕的设计。你会违反班级的单一职责原则。相反,将您的代码重构为多个类,但使用组合来附加可选属性。

例如:

class MyDataObject {
    private $main_property;
    private $extended_property;

    /* ... getters/setters for $main_property. */
    public function set_extended_property(IExtendedProperty $property) {
        $this->extended_property = $property;
    }
}

IExtendedProperty自定义属性数据的接口在哪里。

于 2012-06-25T00:17:03.753 回答