2

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

第一个例子: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 

}

请教我。

谢谢 :)

4

2 回答 2

2

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

我认为这更清楚。这样,您就可以清楚地区分关于 Renderer 接口的特定业务代码和有关您的 TriangleOpenGLTest 的其他业务代码。

很容易区分特定于 TriangleOpenGLTest 的内容和特定于渲染实现的内容。

于 2012-02-17T14:56:50.477 回答
2

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

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

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

于 2012-02-17T15:05:57.157 回答