用一个例子最容易解释。
您有一个必须“做某事”的Troll(具有现有示例的类)。 它的行为根据其心情而有所不同。 如果它是 GoodMood 它就会 sleep ,如果它是 AngryMood 它就会跺脚。 显然,巨魔可以改变它的心情(我真的不明白这是怎么做到的),因此它的行为。
我们被告知,这必须使用“接口(interface)”来完成,但我不明白如何做到这一点。 显然使用字符串或枚举很容易做到这一点(为了清洁),但显然必须使用接口(interface)。
我得到了我的成绩,这不是家庭作业,只是想知道如何完成。
最佳答案
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());
解释
你有一个通用接口(interface) Mood 和一个未实现的 behave 方法。对于不同类型的心情,您可以实现它。因此,在您的巨魔类(class)中,您只需要通过适当的情绪类(class)即可。 doSomething() 方法会根据心情执行相关任务
好处
如果你想添加更多的情绪,你不需要对代码的主要部分做太多的改变。只需创建另一个类,实现 Mood 接口(interface),然后像以前一样使用
And they call it Strategy Design Pattern
关于java - 一个类的例子如何改变它的行为? Java接口(interface)使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16855150/