我有 - 工作人員界面。每個工人都有能量。裝飾模式問題在JAVA
public interface Worker {
int work();
double getEnergy();
}
和 - juniorWorker類實現工人接口。初中職員有100能量。
public class juniorWorker implements Worker {
public int work() {
return (int) getEnergy();
}
public double getEnergy() {
return 100;
}
}
,也有 - 那實現工人接口 efficientWork,powerWork類。高效工作將減少20%的能源。 powerwork將提高10%的能量。
public class efficientWork implements Worker {
private Worker worker;
public efficientWork(Worker w) {
this.worker=w;
}
public int work() {
return (int) (worker.getEnergy()*getEnergy());
}
public double getEnergy() {
return 0.8;
}
}
public class PowerWork implements Worker {
private Worker worker;
public PowerWork(Worker w) {
this.worker=w;
}
public int work() {
return (int) (worker.getEnergy()*getEnergy());
}
public double getEnergy() {
return 1.1;
}
}
其實,我試圖INT工作()將總結總能源每個工人將花費。 例如,我的Demo類:
public class Demo {
public static void main(String[] args) {
Worker j= new efficientWork(new juniorWorker());
System.out.println(j.work());
}
}
這種情況下可以正常工作 - 系統將打印。
但是這個例子中,打印0總是:
public class Demo {
public static void main(String[] args) {
Worker j= new efficientWork(new PowerWork(new juniorWorker()));
System.out.println(j.work());
}
}
幫助?我期待得到88! (110 * 0.8)
你爲什麼要傳遞一個工人對象,以實現工人的所有類? – Joey
我期待得到88! (110 * 0.8) – MoZZ
@HovercraftFullOfEels只是解釋了一些。 – MoZZ