最简单的解释一个例子。
你有一个 Troll (一个包含现有示例的类)必须“做某事”。 根据其情绪,它表现不同。 如果它是 GoodMood ,它就会睡觉,如果它是 AngryMood ,它会踩到它的脚。 显然,巨魔可以改变它的情绪(我真的不知道如何做到这一点)以及它的行为。
我们被告知,这必须使用“接口”完成,但我不知道如何做到这一点。 使用String或Enum(清洁度)显然很容易做到这一点,但显然必须使用接口。
我得到了我的成绩,这不是作业,只是想知道如何做到这一点。
答案 0 :(得分:5)
interface Mood{
behave();
}
class GoodMood implements Mood{
behave(){
// behavior for good mood
}
}
class AngryMood implements Mood{
behave(){
// behavior for angry mood
}
}
class Troll{
doSomething(Mood m){
m.behave()
}
}
使用
进行通话new Troll().doSomething(new AngryMood());
new Troll().doSomething(new GoodMood());
<强>解释强>
你有一个通用的界面心情与一个没有实施的行为方法。对于不同类型的情绪,你可以实现它。因此,在您的Troll课程中,您只需要通过适当的心情课程。根据情绪,doSomething()方法将执行相关任务
<强>优势强>
如果您想添加更多情绪,则无需在代码的主要部分进行太多更改。只需创建另一个类,实现Mood接口,然后像之前一样使用
答案 1 :(得分:1)
这可以通过多种方式解决,枚举就是其中之一:
enum TrollMood
; doSomething
方法; GOOD
和ANGRY
成为会员; doSomething
; Troll
类具有属性TrollMood mood
; Troll
也有方法doSomething
,委托给mood.doSomething
。您可以在此设计中引入界面,例如,您可以定义interface TrollBehavior { void doSomething(); }
并拥有TrollMood implements TrollBehavior
。设计没有要求它,但如果这是要求,那么就有你的界面。
答案 2 :(得分:0)
使用国家设计模式来实现这一目标。