設計模式 建造者模式

2021-09-27 08:45:14 字數 2461 閱讀 9944

將乙個複雜物件的構建與它的表示分離,使得相同的構建過程可以建立不同的表示

使用者只需要指定需要建造的型別就可以得到他們,建造的過程及細節不需要知道

物件有非常複雜的內部結構(很多屬性)

想把複雜物件的建立與適用分離

優點:封裝性好,建立於與使用分離,一定程度上進行解耦

缺點:產生多餘的builder物件,同時產品內部如果發生變化,建造者也需要進行修改,成本比較大

例子:以建立乙個郵箱作為例子

public class mailaccount 

public void setname(string name)

public string getpassword()

public void setpassword(string password)

public string getaddress()

public void setaddress(string address)

public string getphone()

public void setphone(string phone)

@override

public string tostring() ';

}}

抽象的建造者

public abstract class amailaccountbuilder
具體的建造者實現類

public class mailaccountbuilder extends amailaccountbuilder 

@override

public amailaccountbuilder buildpassword(string password)

@override

public amailaccountbuilder buildaddress(string address)

@override

public amailaccountbuilder buildphone(string phone)

@override

public mailaccount build()

}

在使用者類中新增乙個建立郵件的方法

public class user 

public mailaccount buildmailaccount(string name, string password, string address, string phone)

}

測試

public class test 

}

最終列印

mailaccount
public class mailaccount 

public mailaccount(mailaccountbuilder mailaccountbuilder)

public string getname()

public void setname(string name)

public string getpassword()

public void setpassword(string password)

public string getaddress()

public void setaddress(string address)

public string getphone()

public void setphone(string phone)

@override

public string tostring() ';

}public static class mailaccountbuilder

public mailaccountbuilder buildpassword(string password)

public mailaccountbuilder buildaddress(string address)

public mailaccountbuilder buildphone(string phone)

public mailaccount build()

}}

呼叫

mailaccount account=new mailaccount.mailaccountbuilder()

.buildname("小明")

.buildpassword("123456")

.buildaddress("小明@gmail.com")

.buildphone("12345678912")

.build();

system.out.println(account.tostring());

設計模式 建造者模式

在gof的23種設計模式中對builder pattern的定義是 將乙個複雜物件的構建與它的表示分離,使得同樣的構建過程可以建立不同的表示。從程式角度來說,就是在基類定義某種事物建立的過程或業務流程,在子類進行重寫或是使用基類方法。這樣建立出來的例項不會因為過程或流程的丟失而使業務失敗。舉例來說,...

設計模式建造者模式

今天看了乙個設計模式。總結下,以免忘了。如何引入建造者模式的呢?作者舉了個例子。建造小人。當然需要 頭,左手,右手,左腳,右腳,軀幹。建造的過程使用 使用類裡面的方法就行了。但是如果需要乙個胖的小人,乙個瘦的小人呢?就需要重新構造乙個胖人類,乙個瘦人類。當然 使用者還需要自己處理構造的過程。這樣 就...

設計模式 建造者模式

定義 將乙個複雜的物件的構建與它的表示分離,是的同樣的構建過程可以建立不同的表示。包括的要素 1 產品類 2 抽象建造者或者介面 3 建造者 4 導演類 建造者模式的優點 首先,建造者模式的封裝很好,使用建造者模式可以有效地封裝變化,注意在使用建造者模式的場景中,一般產品類和建造者介面是比較穩定的,...