0

一部の PHP ドメイン オブジェクトには、オブジェクトの外部から設定する必要があるプロパティがありますが、特定のクライアント オブジェクトによってのみ設定されます。これを強制するにはどうすればよいですか?

クラス内でセッターを使用していますが、異なる呼び出し元を区別する方法を見つけることができれば、セッターでいくつかのチェックを行うことができると確信しています。ただし、これは少し複雑に思えます。オブジェクト指向の設計原則に違反しているように感じます (おそらく、「教えて、尋ねるな」?)。

これはかなり一般的なシナリオだと思います。私は何が欠けていますか?

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 に答える