簡體   English   中英

如何避免if語句並調用多個構造函數

[英]How to avoid if statement and call multiple constructors

我想問一下如何處理多個構造函數。

if(a != null && b != null)
    return new QueryProducer(query, a, b);
else if(a != null)
    return new QueryProducer(query, a);
else if(b != null)
    return new QueryProducer(query, b);
else return new QueryProducer(query);

我想避免其他復雜的塊。 在這種情況下,可伸縮性也不是很好。

在這里使用構建器模式怎么樣? 請參閱Javacodegeeks的此鏈接以獲取代碼示例

QueryProducer.withQuery(yourQuery).withA(a).withB(b).build();

創建一個構建器,該構建器根據傳遞的參數構建QueryProducer。 您可以將創建對象的所有邏輯放在一個位置。 我想到的另一件事是將所有三個參數傳遞給構造函數,並在那里進行處理,但由於可能發生異常,我幾乎總是避免在構造函數中放置任何邏輯。

正如其他人回答的那樣,如果您遇到以下任何一種情況都成立的情況,那么您應該強烈考慮使用構建器模式(使用一個輔助對象,通常由對象類中的靜態嵌套類定義)您想要的對象):

  • 我的構造函數是否有4個或更多參數?
  • 我是否在重載構造函數?
  • 我的構造函數是否具有用於指定可選數據的參數?
  • 我是否希望將來在我的構造函數中添加更多參數?
  • 我是否想要JavaBean模式的可讀性,同時仍然能夠構造不可變的對象?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM