![](/img/trans.png)
[英]What is best approach to share a utility class between multiple microservices?
[英]Utility Class - What is the correct approach?
具有公共靜態的所有方法的實用程序類的正確方法是什么。
我應該使用最終類還是抽象類?
請給出建議。
例如:
public final class A{
public static void method(){
/* ... */
}
}
要么
public abstract class A{
public static void method(){
/* ... */
}
}
abstract
有其自己的目的。 如果你想要其他類( override
)實現的一些類功能,那么你使用abstract。
如果它只是實用程序類,但你不希望其他類繼承它,那么我會選擇final
類。 如果實用程序類只有static
方法,那么任何方法都不能覆蓋它們,所以將它們放在non-final
類中也沒有區別。
創建實用程序類的最佳方法。 如果您不希望其他類繼承它。
//final, because it's not supposed to be subclassed
public final class AlertUtils
{
// private constructor to avoid unnecessary instantiation of the class
private AlertUtils() {
}
public static ..(){}//other methods
}
final
這里比abstract
更有意義。 通過將類標記為final
,您禁止擴展類。 另一方面,將類標記為abstract
是相反的,因為沒有子類的抽象類沒有多大意義。 所以預計會延長。
使類最終並添加一個私有構造函數。 (這是像java.lang.Math
這樣的類使用)
public final class A {
private A() {}
public static void method() {
}
}
如果你希望其他類使用這個類的功能,那么使它成為抽象的其他類使它成為最終
這些是我發現的一些指導原則:
正如您所問,類名不能是抽象的(不可取) - >這意味着您計划在另一個類中實現它。 如果要防止子類,請使用final作為類名; 如果要阻止實例化,請使用私有構造函數。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.