类的示例如何更改其行为?Java接口使用
用一个例子最容易解释 你有一个巨魔(一个包含现有示例的类),它必须“做点什么”。 它根据自己的情绪表现不同。 如果心情好,它就睡觉;如果心情不好,它就跺脚。 很明显,巨魔可以改变它的情绪(我真的不知道这是怎么做到的),从而改变它的行为 我们被告知,这必须使用“接口”来完成,但我不知道如何才能做到。 显然,使用字符串或枚举很容易做到这一点(为了清洁起见),但显然必须使用接口类的示例如何更改其行为?Java接口使用,java,interface,behavior,Java,Interface,Behavior,用一个例子最容易解释 你有一个巨魔(一个包含现有示例的类),它必须“做点什么”。 它根据自己的情绪表现不同。 如果心情好,它就睡觉;如果心情不好,它就跺脚。 很明显,巨魔可以改变它的情绪(我真的不知道这是怎么做到的),从而改变它的行为 我们被告知,这必须使用“接口”来完成,但我不知道如何才能做到。 显然,使用字符串或枚举很容易做到这一点(为了清洁起见),但显然必须使用接口 我得到了我的分数,这不是家庭作业,只是想知道如何做到这一点。这可以通过多种方式解决,枚举就是其中之一: 定义enum 让它定
我得到了我的分数,这不是家庭作业,只是想知道如何做到这一点。这可以通过多种方式解决,枚举就是其中之一:
enum
李>
doSomething
方法李>
好的
和生气的
作为成员李>
doSomething
李>
Troll
类有一个属性TrollMood
李>
Troll
也有一个方法doSomething
,委托给mood.doSomething
接口TrollBehavior{void doSomething();}
,并让TrollBehavior实现TrollBehavior
。设计没有要求它,但是如果这是要求,那么就有你的接口
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());
解释
您有一个普通的界面气氛,但没有实现behave方法。对于不同类型的情绪,您可以实施它。所以在你的巨魔课程中,你只需要通过适当的情绪课程。根据情绪,doSomething()方法将执行相关任务
好处
如果您想添加更多的情绪,则不需要对代码的主要部分进行太多更改。只需创建另一个类,实现Mood接口,然后像以前一样使用
他们称之为
使用状态设计模式来实现此目标 设计可能没有,但OP有。@DaveNewton你认为如何将一个接口引入其中还不够明显吗?