AdSense

網頁

2019/2/26

提供靜態方法的工具類別(Utility Class)的設計

寫Java程式時常會寫一些共用的工具類別(Utility),裡面提供一些靜態方法(static method)讓其他程式可以方便使用。

工具類應該可以設計如下。

public class UtilityClassDemo {
    
    private UtilityClassDemo () {
        throw new AssertionError("Utility class cannot be instantiated"); 
    }
    
    public static int add(int x, int y) {
        return x + y;
    }

}

工具類別只提供靜態方法,所以不需要初始化為物件,所以建構式應該用private隱藏起來。建構式中的AssertionError可避免從內部或被反射(reflection)產生實例。

工具類不需被繼承,而唯一的private建構式能防止被繼承。

工具類應為無狀態(stateless),所以不應該有影響行為的屬性。


或利用Lombok的@UtilityClass annotation快速建立一個具有上述特色的工具類。


參考:

沒有留言:

AdSense