处理事件:实现接口或使用内部类来处理接口.哪个更好

thu*_*nle 6 java oop android

要处理事件,有两种方法:

  1. 例如,实现回调接口

    public class A implements View.OnClickListener {
        public void onClick(View v) {
            ....
        }
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            ...
            aboutLayout = (LinearLayout) findViewById(R.id.aboutLayout);
            aboutLayout.setOnClickListener(this);
        }
    }
    
    Run Code Online (Sandbox Code Playgroud)
  2. 创建实现回调接口的内部类

    public class ActivityAbout  {
        private class ViewClickListener implements View.OnClickListener {
            public void onClick(View v) {
                ..
            }
        }
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            ...
            ViewClickListener listener = new ViewClickListener();
            aboutLayout = (LinearLayout) findViewById(R.id.aboutLayout);
            aboutLayout.setOnClickListener(listener);
        }
    }
    
    Run Code Online (Sandbox Code Playgroud)

哪一个更好?

Eri*_*ric 1

如果代码很长(并且需要组织或方法化),或者如果我计划一遍又一遍地使用相同的代码,我倾向于使用内部类。Surface为了清楚起见,甚至我的回调也被组织为内部类。

如果代码简短且易于处理(可能只有事件中的一行),我会使用匿名类。

如果事件与类本身直接相关,我只会使用第一个实现,并且永远不需要附加其他侦听器。这是一种非常罕见的情况。(我也用它进行简单的调试,但这与这里无关。)