一家餐厅生意红火,餐厅工作人员忙得不可开交
代码实现:
public interface
IChef
{
void
wash();
/**
洗菜
/
void
cooking(); /** *
做饭
/
}
public class
BigChef
implements
IChef
{
public
void wash() { }
/*
洗菜的逻辑与大厨无关
/
public
void cooking() {
System.out.println
("
大厨做饭
");
}}
public class Kitchen implements
IChef
{
public
void wash() {
System.out.println
("
小厨洗菜
"); }
public
void cooking() {
}
/*
做饭的逻辑与小厨
无关
/ }}
缺点:
1. 接口设计不合理:接口中包含了洗菜和做饭两个方法,但是洗菜的逻辑与大厨或小厨并没有关系,应该将其移除接口。
2. 接口实现不一致:虽然大厨和小厨都实现了IChef接口,但是他们在洗菜和做饭的实现上有所不同,这可能会导致接口的不稳定性。
3. Kitchen类的cooking方法没有实现:虽然做饭的逻辑与小厨无关,但是在实现时应该将其实现为空方法或抛出异常等,以避免使用Kitchen实例时出现问题。
修改后的代码实现:
public interface IChef {
void cooking(); // 做饭方法
}
public class BigChef implements IChef {
public void cooking() {
System.out.println("大厨做饭");
}
}
public class Kitchen implements IChef {
public void cooking() {
// 厨房里不进行做饭操作
}
}
public class VegetableCleaner {
public void wash() {
// 洗菜的逻辑
}
}