当我想要实现一个类时,我不知道两种类型的使用之间有什么真正的区别:(我运行并看到它们是相同的结果)
第一个例子:直接将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
}
请教我。
谢谢:)
答案 0 :(得分:2)
这两种方式都很好,但我更喜欢第二种方式。为什么?
我认为这更清楚。通过这种方式,您可以清楚地分离有关Renderer接口的特定业务代码以及有关TriangleOpenGLTest的其他业务代码。
很容易区分TriangleOpenGLTest的特定内容以及渲染实现的具体内容。
答案 1 :(得分:2)
你应该争取高凝聚力 - 一个班级应该做一个工作(或多或少)。
如果一个类实现了一个接口,那么该接口就是该类的一部分' API(例如,它在其Javadoc中显示该类实现了接口)。所以你应该问自己,例如该类是否真的是一个渲染器,是否可以在任何可以使用渲染器的地方使用?或者它只是一个实施细节?
如果它只是一个实现细节,那么最好使用另一个类(例如本地内部甚至是匿名类)而不是泄漏API中的接口。