オブジェクト指向の原則3:依存関係逆転の原則とインタフェース分離の原則

依存関係逆転の原則に基づいたデザインパターン「依存性の注入:Dependency Injection(DIパターン)」の解説及びDIツール「Unity」の実装方法も解説しています。サンプルコードはC#を使って解説しています。
4.60 (584 reviews)
Udemy
platform
日本語
language
Programming Languages
category
オブジェクト指向の原則3:依存関係逆転の原則とインタフェース分離の原則
3 579
students
3.5 hours
content
Sep 2024
last update
$19.99
regular price

Why take this course?

以下に、インタフェース分離の原則を解説するための「ドラクエの例」を用意します。この例では、ゲーム内のキャラクターが異なる「魔法」のインタフェースに依存するように設計されています。各役割(戦士や魔法使いなど)が自分の役割に合った魔法を選択できるように、インタフェース分離の原則に従って設計されています。

ドラクエの例

#01 インタフェース分離の原則

ゲーム内で様々なキャラクターが存在し、それぞれが異なる魔法を使用できるように設計されています。ここで「魔法」はインタフェースとして定義されており、具体的な実装(火球、召喚、治癒など)は遅延読み込み(Lazy Loading)または抽象クラス/インターフェースを介して提供されます。

#02 キャラクターを操作できるようにする

プレイヤーはゲーム内のキャラクターを操作し、そのキャラクターが適切な魔法を選択して使用することができます。この操作は、キャラクターの役割に依存していますが、具体的な魔法の実装には依存していません。

#03 役割に応じてインタフェースを分離する

各キャラクターは、自身の役割に応じた魔法インタフェースを実装しています。例えば、戦士型のキャラクターは戦闘力が高い魔法のみを提供するインターフェースを実装し、妖術師型のキャラクターは賢力が高い魔法のみを提供するインターフェースを実装することができます。

#04 ロールとしてのインタフェース

各キャラクターは、自分の役割(ロール)に合った「魔法」のインタフェースを実装することで、異なる具体的な魔法の実装に依存せずに柔軟に対応できます。これにより、新しい魔法を追加する場合も、既存のインタフェースに変更が必要なく、新たな実装を追加するだけで十分です。

#05 インタフェース分離の原則まとめと5大原則の総括

  • 役割の堅牢性(Role Stability): キャラクターは自分の役割に依存していますが、実装されている魔法は変更可能です。これにより、キャラクターの役割が変わった場合も、新しい魔法を簡単に組み込むことができます。
  • 拡張性(Extensibility): ゲーム内は新しい魔法を簡単に追加することができます。
  • 可置換性(Substitutability): キャラクターが使用する魔法の実装は、適切なインタフェースを介して提供されるため、いつでも置き換えられることができます。
  • 単一責任(Single Responsibility Principle): 各魔法の実装は独立して動作するように設計されており、複数の魔法が相互依存関係にあることなく個別に管理できます。
  • 最小限の知識(Principle of Least Knowledge): キャラクターは自分が使う魔法のインタフェースについてしか知る必要があり、具体的な実装には依存せず、他の系統やコンポーネントについては知らなくてもいます。

このように、インタフェース分離の原則を適用することで、システムの柔軟性や保守性が向上し、新機能の追加やバグ修正が容易になります。また、コードの理解や再利用性も高まります。これはオブジェクト指向プログラミングの基本原則である「単一責任の原則」(Single Responsibility Principle)と「最小限の知識の原則」(Principle of Least Knowledge)によって明らかになります。

Loading charts...

4400960
udemy ID
17/11/2021
course created date
28/11/2021
course indexed date
Bot
course submited by