类的示例如何改变其行为? Java接口用法

时间:2013-05-31 10:26:47

标签: java interface behavior

最简单的解释一个例子。

你有一个 Troll (一个包含现有示例的类)必须“做某事”。 根据其情绪,它表现不同。 如果它是 GoodMood ,它就会睡觉,如果它是 AngryMood ,它会踩到它的脚。 显然,巨魔可以改变它的情绪(我真的不知道如何做到这一点)以及它的行为。

我们被告知,这必须使用“接口”完成,但我不知道如何做到这一点。 使用String或Enum(清洁度)显然很容易做到这一点,但显然必须使用接口。

我得到了我的成绩,这不是作业,只是想知道如何做到这一点。

3 个答案:

答案 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接口,然后像之前一样使用

  

他们称之为Strategy Design Pattern

答案 1 :(得分:1)

这可以通过多种方式解决,枚举就是其中之一:

  1. 定义enum TrollMood;
  2. 让它定义一个抽象的doSomething方法;
  3. GOODANGRY成为会员;
  4. 让每个成员适当地实施doSomething;
  5. Troll类具有属性TrollMood mood;
  6. Troll也有方法doSomething,委托给mood.doSomething
  7. 您可以在此设计中引入界面,例如,您可以定义interface TrollBehavior { void doSomething(); }并拥有TrollMood implements TrollBehavior。设计没有要求它,但如果这是要求,那么就有你的界面。

答案 2 :(得分:0)

使用国家设计模式来实现这一目标。