也叫生成器模式,他是乙個建立型模式 通常是實現了模板方法模式,也就是有模板方法和基本方法.
規範產品的組建,一般是由子類實現。例子中的carbuilder就屬於 抽象建造者。public class product
}
實現抽象類定義的所有方法,並且返回乙個組建好的物件。例子中 的benzbuilder和bmwbuilder就屬於具體建造者。public abstract class builder
負責安排已有模組的順序,然後告訴builder開始建造,在上面的例 子中就是我們的老大,××公司找到老大,說我要這個或那個型別的車輛 模型,然後老大就把命令傳遞給我,我和我的團隊就開始拼命地建造, 於是乙個專案建設完畢了。public class concreteproduct extends builder
//組建乙個產品
public product buildproduct()
}
將乙個複雜物件的構建和他的表示分離,使得同樣的構建過程可以建立不同的表示。public class director
}
使用者只需要指定需要建造的型別就可以獲得物件,建造過程及細節不需要了解
乙個物件有非常複雜的內部結構(很多屬性)
我們可以把複雜物件的建立和使用分離
可以不用關心誰先誰後了當前執行的順序由具體的構建者來決定,使用者只需要關心需要的內容
if (str == null)int len = str.length();
ensurecapacityinternal(count + len);
str.getchars(0, len, value, count);
count += len;
return this;
}@override
return this;
}
public cachebuilder adddecorator(class extends cache> decorator)
return this;
}public cache build()
cache = setstandarddecorators(cache);
} else if (!loggingcache.class.isassignablefrom(cache.getclass()))
return cache;
}
public sqlsessionfactory build(reader reader, string environment)
public sqlsessionfactory build(reader reader, properties properties)
public sqlsessionfactory build(reader reader, string environment, properties properties) catch (exception e) finally catch (ioexception e)
}}
建立物件的力度不同,建造者模式建立複雜的物件,由各種複雜的部件組成,工廠模式建立出來的都一樣public abstractbeandefinition getbeandefinition()
public static beandefinitionbuilder genericbeandefinition(string beanclassname)
public static beandefinitionbuilder genericbeandefinition(class> beanclass)
關注點不一樣
建造者模式根據建造過程的順序不一樣,最終的物件部件組成也不一樣
什麼情況下應該考慮到使用建造模式?設計模式 建造者模式
在gof的23種設計模式中對builder pattern的定義是 將乙個複雜物件的構建與它的表示分離,使得同樣的構建過程可以建立不同的表示。從程式角度來說,就是在基類定義某種事物建立的過程或業務流程,在子類進行重寫或是使用基類方法。這樣建立出來的例項不會因為過程或流程的丟失而使業務失敗。舉例來說,...
設計模式建造者模式
今天看了乙個設計模式。總結下,以免忘了。如何引入建造者模式的呢?作者舉了個例子。建造小人。當然需要 頭,左手,右手,左腳,右腳,軀幹。建造的過程使用 使用類裡面的方法就行了。但是如果需要乙個胖的小人,乙個瘦的小人呢?就需要重新構造乙個胖人類,乙個瘦人類。當然 使用者還需要自己處理構造的過程。這樣 就...
設計模式 建造者模式
定義 將乙個複雜的物件的構建與它的表示分離,是的同樣的構建過程可以建立不同的表示。包括的要素 1 產品類 2 抽象建造者或者介面 3 建造者 4 導演類 建造者模式的優點 首先,建造者模式的封裝很好,使用建造者模式可以有效地封裝變化,注意在使用建造者模式的場景中,一般產品類和建造者介面是比較穩定的,...