0
0

More than 3 years have passed since last update.

Composite Pattern

Last updated at Posted at 2020-11-12

再帰的にメソッドを呼び出す
Composite Patternは木構造を表現できる
(木構造になるのならCompositeを検討できる)

Design Pattarm MENU

以下のクラス構成で確認します

クラス 説明
interface
face
異なるオブジェクトをface型で扱う
sam.class faceを実装する
samList.class faceを実装する
Listを保持し、再帰呼出しする
user(Main.class) 動作を確認する

*user 他の開発者がこのパターンを利用する、という意味合いを含みます

下記にサンプルコードを記載します

interface_face
interface face{void print();}
sam.class
class sam implements face{
      public void print(){
      System.out.println("."+this);
}}
samList.class
class samList implements face{
      List   list = new ArrayList();
      void   add(face fc){list.add(fc);}
      public void print(){
             Iterator it = list.iterator();
             while(it.hasNext()){
                   face fit = (face) it.next();
                   System.out.print("/"+fit);
                   fit.print(); // fitが sam型 なら sam.class のprint()が呼ばれ、こちらは再帰しません
                                // fitが samList型 なら samListのprint()が再帰的に呼び出されます
             }
      }
}
user(Main.class)
public static void main(String[] args){
  samList  sam1 = new samList();
  samList  sam2 = new samList();
  samList  sam3 = new samList();
  sam2.add(new  samList());
  sam2.add(new  sam());
  sam3.add(new  samList());
  sam3.add(new  sam());
  sam1.add(sam2);
  sam1.add(sam3);
  sam1.print();
}}
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0