私はまだプログラミング開発の初心者であり、きれいなデザインを作成するのに苦労しています。具体的には、次のようなシナリオがあります。
それぞれ共通の機能を持つ 4 つのクラスがあります。これらのメソッドを A、B、C などと呼びましょう。
クラス: アカウント; メソッド: A、B、C、G、H、I、S1、S2、S3
クラス: フォルダー。メソッド: A、B、C、D、E、S1、S2、S3
クラス: グループ ; メソッド: A、B、C、D、E、F、S1、S2、S3
クラス: Role ; メソッド: A、B、C、D、E、F、S1、S2、S3
上記のメソッドは抽象的です。同様に、メソッド A を異なる方法で実装する FooAccount と BarAccount が存在する可能性があります。ただし、FooAccount と FooGroup には同じメソッド A があります (これらは同じ実装であるため、Foo)。FooAccount と BarAccount が同じメソッド S1、S2、および S3 を持つように、Foo と Bar の間でも同じように実装されているいくつかのメソッド S1、S2、および S3 があることを除いて、それほど悪くはありません。
現在、私のデザインはかなり醜いです:
インターフェイス Object1: A、B、C を宣言し
ます インターフェイス Object2 は Object1 を拡張します: D、E を宣言します インターフェイス Object3 は Object2 を拡張し
ます: F を宣言し
ます インターフェイス Account は Object1 を拡張します: G、H、I を宣言し
ます インターフェイス Folder は Object2 を拡張します。
インターフェイス Group は Object3 を拡張します。
インターフェイス Role は Object3 を拡張します。
class Helper: S1、S2、S3 を定義
私は複数の継承が正当な理由で禁止されていることを知っていますが、そうすることを許可された場合、メソッドS1、S2、およびS3をObject1に入れて、すべてのインターフェイスを要約に変えることができます。その後、fooaccountはアカウントとfooobject1の両方を拡張できます。
どの構造がより良いか、誰かアドバイスをもらえますか? すべての A、B、C などを Util クラス (FooUtil や BarUtil など) に入れる必要がありますか?