寫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快速建立一個具有上述特色的工具類。
參考:
沒有留言:
張貼留言