【问题标题】:Programming convention on Anonymous Class vs Implementing Interface匿名类与实现接口的编程约定
【发布时间】:2012-06-04 09:26:22
【问题描述】:

从 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) {

}
}

【问题讨论】:

标签: java android interface anonymous-class


【解决方案1】:

我认为第二个方法很好

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

2- 它使代码更短且易于阅读..

3- 易于维护。

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

【讨论】:

  • 另外,我认为在Activity中实现接口也能一眼看出你对哪个监听器感兴趣。
【解决方案2】:

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

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

【讨论】:

  • 我认为调用类似系统的方法(我说的是android案例)不是一个好习惯。如果您需要显式调用此类方法,则应该是错误的。但是,您的建议显示了实现接口的另一个方面。谢谢:)
  • 我没有说我会那样做。我只说有这种可能=]
【解决方案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()

但是功能上没有任何变化,两者都是一样的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-13
    • 2010-09-16
    • 1970-01-01
    • 1970-01-01
    • 2014-05-11
    相关资源
    最近更新 更多