[解決済み】インターフェイスを作成するタイミングはどのように判断するのでしょうか?
2022-04-11 21:35:38
質問
開発学習の中で、インターフェースについてもっと勉強しなければならないと感じるようになりました。
よく読んでいるのですが、いまいちピンとこないのです。
みたいな例を読んだことがあります。しかし、何か作業をしていて、「ここでインターフェイスを使うべきだ!」と感じたことはありません。
何が足りないのだろう?どうしてこんなに難しい概念なんだ!?私はただ、具体的な必要性に気付かないかもしれないという事実に怯えているのです。開発者として何か足りないような気がするんです。もし、このような経験をされた方で、ブレイクスルーされた方がいらっしゃいましたら、この概念を理解するためのヒントを頂ければ幸いです。ありがとうございました。
どのように解決するのですか?
この具体的な問題を解決するのが
4つのタイプのa,b,c,dがある場合、コードの至る所に以下のようなものがあります。
a.Process();
b.Process();
c.Process();
d.Process();
IProcessableを実装させたらどうでしょう。
List<IProcessable> list;
foreach(IProcessable p in list)
p.Process();
これによって、たとえば同じことをするクラスを50種類追加したときに、はるかにうまくスケールします。
もう一つ、具体的な問題です。
System.Linq.Enumerableを見たことがありますか?これは、IEnumerableを実装している任意の型に対して操作する、大量の拡張メソッドを定義しています。IEnumerable を実装するものは基本的に "I support iteration in a unordered foreach-type pattern" と言っているので、任意の列挙型に対して複雑な動作(Count, Max, Where, Select, etc)を定義することができます。
関連
-
[解決済み] どのような場合に '$this' よりも 'self' を使うべきですか?
-
[解決済み] インターフェースと抽象クラスの違いは何ですか?
-
[解決済み] インターフェースと抽象クラス(一般的なOO)
-
[解決済み] C++でインターフェイスを宣言するには?
-
[解決済み] インターフェースとベースクラス
-
[解決済み] C#のリフレクションで型がインターフェースを実装しているかどうかを判断する方法
-
[解決済み] 抽象クラスの代わりにインターフェイスを使用する場合とその逆は?
-
[解決済み】「インターフェースに合わせたプログラム」とはどういう意味ですか?
-
[解決済み] シェルスクリプトのデザインパターンやベストプラクティス [終了しました]。
-
[解決済み] リポジトリとサービスの違い?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] シングルトン・パターンの欠点やデメリットは何ですか?[クローズド]
-
[解決済み] 静的クラスとシングルトンパターンの違い?
-
[解決済み] インターフェースと抽象クラス(一般的なOO)
-
[解決済み] アグリゲート・ルートって何?
-
[解決済み】ラッパークラスとは何ですか?
-
[解決済み] KotlinでBuilderパターンを実装するには?
-
[解決済み] リポジトリとサービスの違い?
-
[解決済み] デザインパターンとアーキテクチャパターンの違いは何ですか?
-
[解決済み] ServiceLocatorはアンチパターンか?
-
[解決済み] オブジェクト指向プログラミングにおける「インターフェイス」の定義とは?