Decorator
既存のクラスの機能を拡張したいが、
既存のクラスは変更したくない場合に間にDecoratorクラスを用いる。
BaseClass.java (既存のクラス)
package gof;
public class BaseClass {
private int width;
private int height;
// コンストラクタ
public BaseClass(int w, int h){
width = w;
height = h;
}
// 幅を返す
public int getWidth(){
return width;
}
// 高さを返す
public int getHeight(){
return height;
}
}
DecoratorLab.java(Decoratorクラス)
package gof;
public class DecoratorLab {
BaseClass baseclass;
// コンストラクタ
public DecoratorLab(int w, int h){
baseclass = new BaseClass(w,h);
}
// 面積を返す
public int getArea(){
return baseclass.getWidth() * baseclass.getHeight();
}
}
Decoratorクラスによって面積を返すgetAreaメソッドが拡張されている。
ただ、継承を利用しても同じことができる。