[英]Android: What is the best practice to organize methods to show alert dialog
[英]Best practice for helper methods in android
我有兩個自定義視圖,它們都從RelativeLayout繼承。 兩者都需要具有相同的輔助方法。
FE
public static void setViewHeight(View v, int heightInDp) {
ViewGroup.LayoutParams layoutParams = v.getLayoutParams();
layoutParams.height = Helper.convertDpToPixel(heightInDp);
v.setLayoutParams(layoutParams);
}
如您所見,目前我正在使用帶有靜態方法的幫助器/實用程序類來實現此目的。 但是我對它感到不舒服並且尋找一種更干凈的方式,而不是將視圖傳遞給靜態上下文。
另一個想法是編寫一個從RelativeLayout擴展的抽象基類。 但是如果我想稍后在其他自定義視圖中使用輔助方法,我不希望受限於RelativeLayout。
我的最后一個想法是為每個Helper方法創建一個類。 對於上面的例子,它可能是這樣的:
public class LayoutTransition {
private View mView;
public LayoutTransition(View v) {
mView = v;
}
public View withHeight(int height) {
ViewGroup.LayoutParams layoutParams = mView.getLayoutParams();
layoutParams.height = height;
mView.setLayoutParams(layoutParams);
return mView;
}
}
但在這里我必須始終使用副本和許多對象。
這種困難的最佳做法是什么?
我通常使用帶有私有構造函數的final類來為這樣的東西創建一個util類,並將對Context
的引用傳遞給util類。 這樣你的helper / util類就不會持有對Context
任何引用,例如下面的例子:
public final class LayoutUtils {
private LayoutUtils() {
throw new IllegalStateException("No instances.");
}
public static void convertDpToPixel(final int heightInDp, final Context context) {
// make use of final to protect your context
// do stuff w/ context and height here
}
}
你可以在代碼中使用它作為LayoutUtils.convertDpToPixel(height, context)
。
這種模式很容易用於View
或Context
類的東西。
我有兩個自定義視圖,它們都從RelativeLayout繼承。
如果只有兩個自定義視圖,則在每個視圖的類中單獨定義方法。 我知道它會增加冗余,但它比將視圖傳遞給靜態方法或創建許多對象更好。
僅當傳遞給方法的對象是不可變的(最終)時,最好創建靜態方法,最好是情境原始數據類型。 否則,請盡可能避免使用靜態輔助方法。
在你的情況下,如果你有兩個以上的自定義視圖,像LayoutTransition
這樣的單獨的簡單java類似乎是很好的解決方案。
這種困難的最佳做法是什么?
它總是取決於情況,所以沒有任何完美的解決方案。 總會有權衡取舍
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.