实现一个类的两种方法

时间:2012-02-17 14:53:28

标签: java class implements

当我想要实现一个类时,我不知道两种类型的使用之间有什么真正的区别:(我运行并看到它们是相同的结果)

第一个例子:直接将Renderer实现到类。

第二个例子:创建一个子类并使该类实现Renderer

我在互联网/电子书上阅读文档时通常会遇到的第二个问题。也许解决方案2有一些我不知道的更多好处。

GLSurfaceView glView;

public class TriangleOpenGLTest implements Renderer{

    public void onCreate(Bundle savedInstanceState){

        glView = new GLSurfaceView(this);
        glView.setRenderer(this);   //this line

    }

}

GLSurfaceView glView;

public class TriangleOpenGLTest implements Renderer{

    public void onCreate(Bundle savedInstanceState){

        glView = new GLSurfaceView(this);
        glView.setRenderer(new Render() );     //And this line

    }

    class Render() implements Renderer{
           //Override function here 

}

请教我。

谢谢:)

2 个答案:

答案 0 :(得分:2)

这两种方式都很好,但我更喜欢第二种方式。为什么?

我认为这更清楚。通过这种方式,您可以清楚地分离有关Renderer接口的特定业务代码以及有关TriangleOpenGLTest的其他业务代码。

很容易区分TriangleOpenGLTest的特定内容以及渲染实现的具体内容。

答案 1 :(得分:2)

你应该争取高凝聚力 - 一个班级应该做一个工作(或多或少)。

如果一个类实现了一个接口,那么该接口就是该类的一部分' API(例如,它在其Javadoc中显示该类实现了接口)。所以你应该问自己,例如该类是否真的是一个渲染器,是否可以在任何可以使用渲染器的地方使用?或者它只是一个实施细节?

如果它只是一个实现细节,那么最好使用另一个类(例如本地内部甚至是匿名类)而不是泄漏API中的接口。