Java中的多态性和接口

时间:2014-12-15 03:05:39

标签: java interface polymorphism

我是java的新手,我正在学习接口和多态。我想知道最好的方法是什么。

假设我有一个简单的课程。

class Object{

     // Renders the object to screen 
     public void render(){
   }

我想通过一个界面来提供对象可以做的事情:

interface Animate{
   // Animate the object
   void animate();
}

如果我想实现动画的界面,我可以执行以下操作:

class AnimatedObject extends Object implements Animate{

  public void animate() {
     // animates the object
  }

}

由于所有非对象都可以动画,我想通过多态来处理动画的渲染,但是不知道如何使用InstanceOf来区分对象,而不必询问它是否实现了接口。我计划将所有这些对象放在一个容器中。

class Example {

 public static void main(String[] args) {

    Object obj1= new Object();
    Object obj2= new AnimatedObject();

    // this is not possible but i would want to know the best way
    // to handle it do i have to ask for instanceOf of the interface?. 
    // There isn't other way?
    // obj1.animate();
    obj1.render();
    obj2.animate();
    obj2.render();

 }
}

1 个答案:

答案 0 :(得分:4)

你实际上比你知道的更近。事实上,你偶然发现了一个反复出现的问题,可以通过Strategy Pattern来解决。

enter image description here

Gang of Four定义的想法是:

  

定义一组可以交换携带的封装算法   出一个特定的行为