一般的なオブジェクト タイプに対して特定のアクションを定義するアプリケーションがあります。
たとえば、フォーラムの投稿と画像を含めることができます。フォーラムの投稿と画像ごとに、推奨、コメント、評価のアクションを実行できます。
現在、静的クラスを定義しています
class CoreObjectUtil
{
protected static $_objObjKey = null;
protected static $_objTypeKey = null;
public static function getComments (...) {...}
public static function getCommentsArray (...) {...}
public static function getRatings (...) {...}
public static function getRatingsArray (...) {...}
}
次に、このようにサブクラス化されます
class ForumPostUtil extends CoreObjectUtil
{
protected static $_objObjKey = 'forumpost';
protected static $_objTypeKey = 'FP';
}
フォーラムの投稿に関連する機能を提供するため。CoreObjectUtil のジェネリック コードに、これらの関数が適用されるオブジェクト タイプごとに何をすべきかを知らせるには、2 つのパラメーターで十分です。
これらの関数を使用するために、次のようにインスタンス クラスで selectPostProcess() クラスを呼び出しています。
public function selectPostProcess ($data)
{
$data = ForumPostUtil::mergeRatings ($data);
$data = ForumPostUtil::mergeComments ($data);
...
}
これはうまく機能し、CoreObjectUtil 内のコードが何をすべきかを知るためのデータ設定を提供するサブクラスを使用して、メイン コードを CoreObjectUtil クラスに集中させます。
別のアプローチは、コードを CoreObjectUtil から基本インスタンス クラスに移動し、それをインスタンス クラスに継承することです。したがって、CoreObjectUtil から静的メソッドを呼び出すのではなく、$this->getComments() のようなメソッド呼び出しを行うことになります。
どちらのアプローチも、機能タイプの観点からは問題なく機能します。しかし、ObjectOriented の設計ガイドラインと経験豊富な ObjectOriented 開発者は、これら 2 つのアプローチについてどう考えているのだろうか。これを行うにはどの方法が望ましいですか?またその理由は?
この件についての考えや洞察をいただければ幸いです。どちらの方法でも問題なくコーディングできますが、どのルートを取るかを決めるのに苦労しています。