匿名类与实现接口的编程约定

时间:2012-05-30 06:50:37

标签: java android interface anonymous-class

从Android开发的角度来看,在编程时,您更倾向于为侦听器实现哪种方式?或者您认为哪种方式最适合可读代码?我举了两个关于这些事情的例子,但是想想更复杂的类,比如有多个Listener:)

第一个例子是匿名类:

public class SenderReceiverActivity extends Activity {

Button cancelButton;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.sending);
    cancelButton = (Button) findViewById(R.id.button1);
    cancelButton.setOnClickListener(new OnClickListener() {

        public void onClick(View v) {

        }
    });
}}

第二个实现接口的例子:

public class SenderReceiverActivity extends Activity implements OnClickListener {

Button cancelButton;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.sending);
    cancelButton = (Button) findViewById(R.id.button1);
    cancelButton.setOnClickListener(this);
}

public void onClick(View v) {

}
}

3 个答案:

答案 0 :(得分:3)

如果您有单个按钮,那么第一种方法是正确的,因为您的代码没有任何复杂性但是you have many button then second is more clear ,just one onClick method for many buttons and check id of button using v.getId()

但功能上没有任何变化都是相同的。

答案 1 :(得分:2)

我认为第二个approch很好

1-您可以在一个地方点击多个视图...

2-它使代码更短,更容易阅读..

3-易于维护。

4-如果您在项目中使用类似基本活动的概念,那么它也很有用。

答案 2 :(得分:0)

嗯,除了一个之外,两者之间没有太大差异:在第二种情况下,您可以从课外访问onClick(View v)方法。

如果涉及到我,我更喜欢第一种方法,因为通常不会有多个组件在点击时同时具有相同的行为。