■メリット
親要素と子要素を共通のインタフェースにまとめることで、
再帰処理を行わせる時に要素を区別させる必要がなくなる。
■実装例
/*User.java*/
public class User {
public static void main(String[] args) {
ParentComposite comp1 = new ParentComposite();
ParentComposite comp2 = new ParentComposite();
ChildComposite comp3 = new ChildComposite();
comp1.add(comp2);
comp1.add(comp3);
comp1.method(); //自分自身(comp1)と子要素comp2と孫要素comp3の分を出力する
}
}
/*CommonInterface.java*/
interface CommonInterface {
void method();
}
/*ParentComposite.java*/
public class ParentComposite implements CommonInterface{
private List<CommonInterface> list = new ArrayList<CommonInterface>();
//再帰的な関数
public void method() {
System.out.println("Composite1です");
for(CommonInterface item: list) {
item.method();
}
}
//子要素の追加等。自分と子を区別しないようにインタフェースを引数に
public void add(CommonInterface composition) {
list.add(composition);
}
}
/*ChildComposite.java*/
public class ChildComposite implements CommonInterface{
public void method() {
System.out.println("Composite2です");
}
}
最終更新:2021年07月09日 19:30