【问题标题】:What is a better coding practice , use implements or methods什么是更好的编码实践,使用工具或方法
【发布时间】:2015-12-01 17:09:37
【问题描述】:

我在 android 中使用导航抽屉,并且我已经构建了两种方式的侦听器。 但是在所有编程代码中,更好的代码如何?

1) 第一个方法我实现了一个类

public class MainActivity extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener{  

 NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
navigationView.setNavigationItemSelectedListener(this);

@Override
public boolean onNavigationItemSelected(MenuItem menuItem) {
//CODE
}
}

2) 在第二种方式中,我只使用一个实例。

NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
navigationView.setNavigationItemSelectedListener(
            new NavigationView.OnNavigationItemSelectedListener() {
                @Override
                public boolean onNavigationItemSelected(MenuItem menuItem) {
                    //CODE
                }
            }
    );

你认为什么更好,为什么? 谢谢=)

【问题讨论】:

  • 性能方面,我相信implements 是最好的方法,但让我们看看答案。

标签: java android performance oop implements


【解决方案1】:

实际上,选择一个或另一个是你个人品味、MainActivity 的责任,也许还有表现的结合。

我通常赞成作文,并尽量避免在同一个班级中混合很多责任。您正在实现的侦听器可能隐藏在工厂或其他东西后面,从而使 MainActivity 的代码更简单,更易于维护。

关于性能,您可能应该选择您的第一选择,但事实上,再实例化一个类应该不会产生任何重大影响。

【讨论】:

    【解决方案2】:

    在这种情况下,我总是使用第一种方法,因为在方法 onAttach 中的片段内部,我可以检查活动以实现与该片段交互所需的接口,例如,抛出异常作为您必须实现接口的信号。除此之外,在这种情况下,您不需要编写 setListener 之类的方法。当然,这是我对这个具体案例的恕我直言。

    【讨论】:

      【解决方案3】:

      实际上这完全取决于你的实现。

      1) 对于案例 1,假设您正在为视图实现一个类。然后,您将只能在该类中使用一次已实现的方法。

      2)案例 2 允许您创建多个函数。

      View.OnClickListener为例,如果你实现这一点,你将能够在类内只使用一次onClick方法。因此,该类中的所有视图都将使用相同的onClick 方法。

      public class MainActivity implements View.OnClickListener {
          public void onClick(View v) {
              .... 
          } 
       }
      

      但是如果你使用 setOnClickListener() ,你可以每次都实现不同(或相同)的方法。

      【讨论】:

        猜你喜欢
        • 2020-07-20
        • 2010-10-26
        • 1970-01-01
        • 1970-01-01
        • 2013-03-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-10-30
        相关资源
        最近更新 更多