0

異なるファイルに3つのクラスがあります。

   X
   |
-------
|     |
Y     Z

継承されたクラスYとZのいくつかのオブジェクトを作成します。

クラスZの特定の関数は、クラスYによってフラグ変数が設定されている場合にのみ実行する必要があります。

このフラグ変数をどこに作成する必要がありますか(どのクラス)、宣言はどのようにする必要がありますか(静的/外部)?

4

5 に答える 5

6

悪名高いフラグの代わりにテンプレートメソッドを検討してください。

于 2009-02-10T13:12:56.533 に答える
1

フラグの影響を受けるのが Z のみの場合、フラグは Z にある必要があります。しかし、すべてがにおいがします-フラグはインスタンスではなくクラスによって設定されます。実用的な場合は、フラグではなくポリモーフィズムを使用してください。

于 2009-02-10T13:17:48.143 に答える
1

これは奇妙なデザインだと思います。継承されたクラス間の依存関係を作成します。

メソッド (およびフラグ変数) は、親クラス X にある必要があります。

(編集)上で書いたものを改良/置換するために、変数は基本クラスにある可能性があり、Yクラスは変数(Setter)を設定し、Zクラスは基本クラスから値を「取得」するメソッドを持ちます.

于 2009-02-10T13:18:03.120 に答える
0

最良の答え: Anton Gogolev の言うとおり、テンプレートを使用してください。

(それ以外の場合は、プライベート列挙型変数を使用します。たとえば、type.x/type.y などを返す GetType() を使用します)

于 2009-02-10T13:20:34.393 に答える
0

2 つの Y オブジェクトがあり、そのうちの 1 つだけにフラグが設定されている場合はどうなるでしょうか? 3 つの Z オブジェクトのうちどれが影響を受けますか? この質問は、あなたの設計に欠陥があることを示唆しています。

于 2009-02-10T13:26:23.020 に答える