许多具有相同方法的类或具有该方法的一个类并且由其他类继承?

时间:2015-11-04 11:00:00

标签: java android memory methods share

我正在开发一个Android应用程序,当然我有很多课程在屏幕上显示视图。现在我在这里有一个简单的方法DpToPx(int),我在stackOverflow的其他地方看到过:

private int dpToPx(int dp){
   DisplayMetrics displayMetrics = context.getResources().getDisplayMetrics();
   return (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dp, displayMetrics);
}

我使用它来提供跨不同屏幕分辨率设备的某种布局一致性。哪种做法更好 -

要在每个放置视图的类中使用此方法,还是将其作为所有类实现的接口?

特别是在内存和对象保留方面(AFAIK有时最好在跨类重复相同的方法而不是单独的对象)。但是当它超过两个班级时?

2 个答案:

答案 0 :(得分:0)

我可能会这样做:

  1. 实用程序类中的静态实用程序方法,您的视图会将A传递给,或

  2. 视图实例化的实用程序类的实例方法

  3. E.g。

    context

    class LayoutUtils {
        public static int dpToPx(Context context, int dp){
            DisplayMetrics displayMetrics = context.getResources().getDisplayMetrics();
            return (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dp, displayMetrics);
        }
    }
    

    在后一种情况下,每个视图都有一个class LayoutUtils { private Context context; LayoutUtils(context context) { this.context = context; } public int dpToPx(int dp){ DisplayMetrics displayMetrics = this.context.getResources().getDisplayMetrics(); return (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dp, displayMetrics); } } 实例。

    实例方法更易于模拟测试(当然,您需要调整上面的内容,以添加依赖注入而不是直接构造函数)。

答案 1 :(得分:0)

我创建了一个类" Utils"在包装内"帮手"在那里,我把我认为将在所有应用程序中使用的所有方法和变量。

然后它就像Utils.dpToPx(10)一样简单地调用; 不要忘记导入课程:)

这是我的方式,我不知道它是否是最好的。

一些代码

  

public class Utils {

  public static int dp2px(int dp, Context context) {
    return (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dp,
            context.getResources().getDisplayMetrics());
} 
     

}