多くのオブジェクトがすべて、create()
edit()
retrieve()
およびdelete()
のようなメソッドを定義する抽象クラスに拡張されているアプリケーションがあります。各子クラスはこれらの関数で同じロジックを使用するので、抽象クラスはそのデフォルトの動作を定義し、補完が必要な場合もあります。Prevent/Restrict Method継承
今、子クラスの一部を変更できないようにする必要があります。つまり、edit()
またはdelete()
のメソッドを持つべきではありません。これは、不変クラスが実装できるような、immutable
のような名前のインターフェイスの仕事のようなものです。問題は、メソッドがメソッドの存在を強制するだけで、メソッドの呼び出しを停止しないということです。だから、これは明らかにうまくいかないでしょう。
2つの親クラスを作成すると、1つは可変オブジェクト用、もう1つは不変オブジェクト用ですが、おそらくメンテナンス行の問題を尋ねています。私は不変のオブジェクトを何もしなかった空のメソッドで問題のメソッドをオーバーライドさせることができましたが、それはまた乱雑に思えますし、その時点で適切なOOPをやっていないようです。
大きなセットのクラスがすべて一連のメソッドを継承できるようにするには、どのような方法を継承しない方が良いでしょうか? (問題のアプリケーションはPHPで書かれていますが、どの言語の一般的なOOPテクニックも役立ちます)。
だから私が正しく理解すれば、階層は次のようになります:Base-> Immutable_Base-> Immutable_ChildrenとBase-> Mutable_Children?その時点で、Mutable_BildクラスをBaseクラスとMutable_Childrenクラスの間に配置する方が良いでしょうか? –
IMHO Mutable_Baseは、Mutableが基本ケースであるため不要です。しかしそれはあなたとあなたの美意識に左右されます。クラスツリーの対称性を強く好む人もいます。 –