GRASPパターン - Polymorphismパターン(多態性パターン)AdvertisementPolymorphismパターンの提唱するもの
ポリモフィズムはオブジェクト指向で、重要な概念のひとつである。「同じインタフェースに対して異なる振る舞いをする。」「同一のメッセージに対して異なる振る舞いをする。」などのような難しい説明がされるが、基本的な考え方は単純である。
異なるオブジェクトに対して同じメッセージを送った場合に、各オブジェクトはそれぞれ独自の振る舞いを行う。 考察
従来の手法で設計していると、条件により使用するクラスが変更になる時などに、条件分岐命令を使用しなければならない。条件分岐命令を使用していると、オブジェクトの種類が変更になった時に条件分岐の部分も変更しなければならないが、ポリモフィズムを使用して設計を行っていると分岐を排除することができるので、変更が容易になる。
メリット
ものすごく単純な例
例として出力を行うプログラムを考える
![]() 図1:ポリモフィズムの基本図 出力を行うインタフェースを持つクラスを利用する側の、メインのクラスでは、出力インタフェースのインスタンスを保持できるようにしておく。 ![]() 図2:Mainクラスの設計 これにより、Mainクラスにファイル出力オブジェクトを保持させればファイル出力を行い、コンソール出力オブジェクトを保持させればコンソール出力を行うことができる。ここで注目する点は、この振る舞いの異なる動作を同じインタフェースで使用できる点である。 コードで表現すると、次のようになる
public class Test{
public static void main(String[] args){
出力 out = new ファイル出力()
// 出力 out = new コンソール出力()
out.出力()
}
}
ファイル出力オブジェクトでもコンソール出力オブジェクトでも、出力は ”out.出力()”という同一のメソッド呼び出しで行う。
Advertisement |
ショートカット・634トップページ・このカテゴリのトップページに戻る ・634ラボ サイト検索Y!ログール |