[英]Static vs Instance method usage
我有一個類有一些方法,我在代碼中使用。 他們的目標是生成一個對象並將其返回以供進一步使用。 我可以用兩種方式實現它。 第一種方法 - 將其設為靜態,如下所示:
public static class Builder
{
public static MyObject BuildMyObject(Settings myEnumSetting, int someParam)
{
//Building object
return MyObject;
}
//Other methods
}
其他方式 - 是使它像這樣的實例:
public class Builder
{
public MyObject BuildMyObject(Settings myEnumSetting, int someParam)
{
//Building object
return MyObject;
}
//Other methods
}
在第一種方式可以創建我的對象,如下所示:
MyObject obj = Builder.BuildMyObject(Settings.Worker,20);
在第二種情況下,我可以像這樣使用它:
MyObject obj = new Builder().BuildMyObject(Settings.Worker,20);
以下哪種方法對使用效率更高?
以下哪種方法對使用效率更高?
這取決於您的要求,如果您的類的唯一責任是創建一個對象並返回它,那么第一個選項與static
類更好。
使用靜態方法更簡單。 實例方法為構建器的繼承層次結構打開,您可以使用某種依賴注入來選擇要使用的構建器。
如果靜態方法有效 - 現在就使用它。 您始終可以將靜態方法轉換為外觀,以便稍后隱藏繼承的構建器類的層次結構的詳細信息。
順便說一句:我使用名稱Factory
而不是Builder
因為這是工廠方法模式實現的一個例子。 Builder是另一種(更復雜的)模式。
您描述的概念稱為工廠模式。 通常,構建器不使用任何實例成員,因此它應該是靜態的。
當存在成員凝聚力時,應該使用實例( http://en.wikipedia.org/wiki/Cohesion_%28computer_science%29 ),例如,在同一組實例變量(字段)上運行的方法屬於一個實例。
如果這個類只返回一個新對象,那么我會認為靜態方式更好,因為你沒有在該類或其他東西中存儲數據。
因此靜態方式比另一方式更有效。 (我不認為創建這個類的10個對象會很有用)
你的班級是工廠類/模式
靜態(工廠)類的優點是,您可以跟蹤在某些靜態屬性中創建的對象。 根據您的要求,這可能非常有用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.