初めての Decorator パターンを実装しています。装飾したい基本クラスには、コンストラクターで初期化されたメンバー変数があります。装飾されたクラスにもこのメンバー変数があります (基本クラスの子孫であるため)。私の質問は、装飾されたクラスでもこのメンバー変数を初期化する必要がありますか、それとも基本クラス (装飾されたクラス内にある) のメンバー変数を使用する必要がありますか?
ここにいくつかのコードがあります。Decorated1 と Decorated2 のどちらが優れているのか気になります。
public class Base{
private String memberVariable;
public Base(){
memberVariable = "";
}
public Base(String s){
memberVariable = s;
}
public String Description(){
//code here
}
}
public abstract class BaseDecorator(){
public abstract String Description();
}
public class Decorated1 extends BaseDecorator{
Base b;
public Decorated1(Base _b){
b = _b;
}
public String Description(){
//code here
}
public String getMemberVariable(){
return b.getMemberVariable();
}
}
public class Decorated2 extends BaseDecorator{
Base b;
public Decorated1(Base _b){
super(_b.getMemberVariable());
b = _b;
}
public String Description(){
//code here
}
public String getMembervariable(){
return memberVariable;
}
}