【发布时间】:2019-02-07 23:21:17
【问题描述】:
我想打印出 cook3 为准备所做的工作。这应该出来:“Pebble穿上围裙”。但相反,我只得到:“穿上围裙”,所以没有名字。我正在尝试添加一个策略模式,我想我做到了,但现在唯一的问题是这个。
这是我的代码:
package cook;
import cook.domein.Restaurant;
import cook.domein.apron;
import cook.domein.classic;
import cook.domein.cook;
import cook.domein.hardRock;
import cook.domein.knives;
import cook.domein.preperation;
public class main {
public static void main(String[] args) {
Restaurant rest = new Restaurant();
cook cook1 = new cook("");
cook cook2 = new cook("Glenn");
cook cook3 = new cook("Pebble");
rest.addCook(cook1);
rest.addCook(cook2);
rest.addCook(cook3);
rest.doPreparation(new apron());
}
}
这是我的界面:
package cook.domein;
public interface preperation {
public void doPreparation(String naam);
}
这是我的子类围裙
package cook.domein;
public class apron implements preperation {
@Override
public void doPreparation(String naam) {
System.out.println(naam+"Putting on a Apron");
}
}
这是我的餐厅课:
package cook.domein;
导入 java.util.ArrayList; 导入 java.util.List;
公共类餐厅实现准备{ 列出厨师;
public Restaurant() {
this.cooks= new ArrayList<cook>();
}
public void addCook(cook cook) {
this.cooks.add(cook);
}
public void removeCook(cook cook) {
this.cooks.remove(cook);
}
public String calculateTotal(){
for(cook cook: cooks){
cook.getNaam();
}
return "";
}
public void doPreparation(preperation prepMethod){
String naam = calculateTotal();
prepMethod.doPreparation(naam);
}
@Override
public void doPreparation(String naam) {
// TODO Auto-generated method stub
}
}
还有烹饪课: 包厨师.domin;
public class cook {
private cook naam;
public cook(cook naam) {
this.naam = naam;
}
public cook(String string) {
// TODO Auto-generated constructor stub
}
public cook getNaam() {
return naam;
}
public void setNaam(cook naam) {
this.naam = naam;
}
}
【问题讨论】:
-
我们看不到您的
Restorant类,可能您想将Cook实例传递给rest.doPreparation(...) -
很不清楚。您正在使用我们一无所知的餐厅和厨师课程。此外,请为您的类选择有意义的英文名称,并尊重 Java 命名约定:类以大写字母开头。
-
这是我的餐厅课程:List
厨师;公共餐厅() { this.cooks= new ArrayList (); } public void addCook(cook cook) { this.cooks.add(cook); } public void removeCook(cook cook) { this.cooks.remove(cook); } public String calculateTotal(){ for(cook cook: cooks){ cook.getNaam(); } 返回 ””; } public void doPreparation(preperation prepMethod){ String naam = calculateTotal(); prepMethod.doPreparation(naam); } @Override public void doPreparation(String naam) { // TODO 自动生成的方法存根 } -
@JBNizet:老实说,只要拼写一致,我不介意它叫什么。约定要求良好的风格,但如果它足够可读,它也不会太糟糕......
-
@Makoto:它永远不会保持一致,因为您将始终使用名称以大写字母开头的标准类。顺便说一句,即使不考虑标准类,也不一致:餐厅以大写字母开头,而所有其他类都不是。
标签: java design-patterns system.out