1


0

空白のインターフェイスとその意味の定義

最近、クラスのセットをメソッドに渡す必要があるという状況に遭遇しました(そのため、メソッドはパラメーターとしてインターフェースを取りました)。

ただし、インターフェイスの下のクラスはそれぞれメソッドの数が異なるため、インターフェイス自体は空白でした。

これが私のアプリケーションのデザインについて何か言っているのですか? この場合は抽象クラスを使用するつもりでしたが、インターフェイスを保持したため、おそらく何かが抽象クラスの使用を妨げました(何を思い出せないのか)。

言語:C#(ただし、これは言語に依存しません)。

3 Answer


3


あなたが説明したのは「マーカーインターフェース」です。

他のデザインパターンと同様に、手元のタスクに適切なパターンである限り、本質的に良い点も悪い点もありません。


2


私が尋ねる質問は、なぜあなたのメソッドに渡されるそれらのクラスのインスタンスが必要なのか、そしてなぜそれがそのセットの1つにすぎないのかということです。

メソッドが、たとえば `System.Object`を使用してまったく同じことを実行できた場合、オブジェクトをパラメーターとして取得する必要がありました。 特定の機能を持つために渡されるアイテムが必要な場合、その機能はインターフェースで体系化されている必要があります。


1


_ これは、アプリケーションのデザインについて、もしあれば、何と言いますか?? _

特定の責任が本当にどこにあるのかについてもう少し考える必要があると言っているのではないでしょうか? http://en.wikipedia.org/wiki/Liskov_substitution_principle [リスコフ置換原理](LSP)を忘れないでください:サブタイプは、そのベースタイプに代わるものでなければなりません。 http://en.wikipedia.org/wiki/Single_responsibility_principle [単一責任原則](SRP)も念頭に置いてください。 しかし、最も重要なことは、物事をシンプルに保つことです。

私はしばしば、このようなものをまとめてしばらくの間(さまざまな視点から、さまざまな使用例で)作業をして初めて物事が明らかになることを発見しました。 だから、あなたは何かを念頭に置いていると言っているかもしれませんが、それをどうするのが最善かはまだ明確ではありません-それはクールです。何かが機能するようにし、準備ができたらリファクタリングします。