2011-11-12 14 views
1

我有兩個班,這兩個構建對象對同一對象的類似副本重複代碼,而且目前有在這兩個類重複的代碼,例如,在1類存在這種代碼:刪掉建立

new Object("a", "b", "c"); 

只有構造函數的參數之一有所不同。因此,此代碼存在於第2類中:

new Object("x", "b", "c"); 

是否有任何模式可以擺脫此代碼重複?

+1

你能給一些更多的細節 –

回答

5

您可以向類中添加構造函數。

class MyObject { 
    MyObject(String a) { 
     this(a, "b", "c"); 
    } 

    MyObject(String a, String b, String c) { 
    } 
} 
+1

+1,也這是一個好主意,用一個有意義的名字來傳達利用認爲對象工廠或靜態方法對象創建的情況。 – Scorpion

1

@Peter Lawrey的解決方案很好。 雖然有一個問題,爲什麼如果它們沒有改變,則將常量參數傳遞給對象構造函數? 如果您刪除這些常量參數,你結束了:

public MyObject(String a){ 
    this.a = a; 
    this.b = "b"; 
    this.c = "c"; 
}