Javaでストラテジを使用しようとしています。そこで、いくつかのインターフェイス(Mort
、AlterationEtat
、ModifPV
)を使用する抽象クラスNenuphare
があり、5種類のNenuphareを作成する必要があります。私が正しいとすれば、抽象クラスとしてNenuphare
を保管しなければなりません、私はデザインパターンの戦略にとどまりたいです。最も簡単な方法は、Nenuphareを実装する5クラスを作成し、各クラスに対してMort
,AlterationEtat
およびModifPV
を変更することです。しかし、私はenum
でこれを行う必要があります。残念ながら、すでにenum型を拡張しているため、enumはクラスを拡張できません。ここで抽象クラスを列挙型に拡張 - ストラテジックパターン
はNenuphare
のための私のコードです:
public abstract class Nenuphare {
public int etatVieillissement = 3;
protected String nom = "Eau";
protected Mort mort = new MortSubite();
protected AlterationEtat altetat = new NoAlteration();
protected ModifPV pv = new NoModifPV();
public Nenuphare(){}
public Nenuphare(Mort mort, AlterationEtat altetat, ModifPV pv){
this.mort = mort;
this.altetat = altetat;
this.pv = pv;
}
public void death(){
mort.mort();
}
public void alteration(){
altetat.altEtat();
}
public void modificationPV(){
pv.modifPV();
}
}
私はNenuphare
の私の5種類こうして作成しようとしました:もちろん
public enum TypeNenuphare extends Nenuphare {
type1{ this.mort = ..., this.altetat = ..., this.pv = ... }, type2{ ... }, type3 { ... }, type4 { ... }, type5 { ...};
}
、理由extends
の動作しません。 Nenuphare
をinterface
と設定し、implements
を使用すると思っていましたが、デザインパターンStrategyを使用する必要があります。私はこれを初めて知ったので、進める方法は本当に分かりません。
ありがとう、私は抽象クラスを使用してデザインパターンStrategyにとどまらなくてはなりませんでした。ところで、フランスの変数には申し訳ありません。 'public void death(){...}'の場合、メソッドが今のところ何かを出力しているので、それは意味があります。 – pioupiou1211
抽象クラスを使用できますが、そうする必要はありません。 – Fildor