亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

Builder pattern-生成器模式

系統 1686 0
參考文獻:
http://en.wikipedia.org/wiki/Builder_pattern

??? 生成器(英:Builder)是一種設計模式,又名:建造模式,是一種對象構建模式。它可以將復雜對象的建造過程抽象出來(抽象類別),使這個抽象過程的不同實現方法可以構造出不同表現(屬性)的對象。


參與者
Builder
創建對象的抽象接口。
Concrete Builder
提供Builder的實現。
Director
負責管理對象創建的正確順序。I
Product
由Director使用Builder創建的最終對象。

    
package com.sinosoft.train.gof.cp;

/** "Product"-建造的最終產品-比薩餅 */
class Pizza {
	private String dough = "";
	private String sauce = "";
	private String topping = "";

	public void setDough(String dough) {
		this.dough = dough;
	}

	public void setSauce(String sauce) {
		this.sauce = sauce;
	}

	public void setTopping(String topping) {
		this.topping = topping;
	}

	@Override
	public String toString() {
		return dough + "-" + sauce + "-" + topping;
	}
}

/** "Abstract Builder"-比薩餅抽象生成器 */
abstract class PizzaBuilder {
	protected Pizza pizza;

	public Pizza getPizza() {
		return pizza;
	}

	public void createNewPizzaProduct() {
		pizza = new Pizza();
	}

	public abstract void buildDough();

	public abstract void buildSauce();

	public abstract void buildTopping();
}

/** "ConcreteBuilder"-夏威夷人的比薩餅生成器 */
class HawaiianPizzaBuilder extends PizzaBuilder {
	public void buildDough() {
		pizza.setDough("cross");
	}

	public void buildSauce() {
		pizza.setSauce("mild");
	}

	public void buildTopping() {
		pizza.setTopping("ham+pineapple");
	}
}

/** "ConcreteBuilder" -辛辣的比薩餅生成器 */
class SpicyPizzaBuilder extends PizzaBuilder {
	public void buildDough() {
		pizza.setDough("pan baked");
	}

	public void buildSauce() {
		pizza.setSauce("hot");
	}

	public void buildTopping() {
		pizza.setTopping("pepperoni+salami");
	}
}

/** "Director" - 廚師 */
class Cook {
	private PizzaBuilder pizzaBuilder;

	public void setPizzaBuilder(PizzaBuilder pb) {
		pizzaBuilder = pb;
	}

	public Pizza getPizza() {
		return pizzaBuilder.getPizza();
	}

	public void constructPizza() {
		pizzaBuilder.createNewPizzaProduct();
		pizzaBuilder.buildDough();
		pizzaBuilder.buildSauce();
		pizzaBuilder.buildTopping();
	}
}

/** A given type of pizza being constructed. */
public class Builder {
	public static void main(String[] args) {
		Cook cook = new Cook();
		PizzaBuilder hawaiianPizzaBuilder = new HawaiianPizzaBuilder();
		PizzaBuilder spicyPizzaBuilder = new SpicyPizzaBuilder();

		cook.setPizzaBuilder(hawaiianPizzaBuilder);
		cook.constructPizza();

		Pizza hawaiian = cook.getPizza();
		System.out.println(hawaiian);
		cook.setPizzaBuilder(spicyPizzaBuilder);
		cook.constructPizza();

		Pizza spicy = cook.getPizza();
		System.out.println(spicy);
	}
}

  

Builder pattern-生成器模式


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!??!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 天啪天干在线视频 | 欧美80岁老妇一级毛片 | 深夜福利网站在线观看 | 久久精品国产99久久6动漫欧 | 久久99热在线观看7 久久99热这里只有精品 | 亚洲一区二区精品推荐 | 色婷婷香蕉 | 国产成人高清视频免费播放 | 99视频精品国在线视频艾草 | 日本精品99| 在线观看黄色网 | 视色视频在线 | 欧美一级成人毛片视频 | 久久免费区一区二区三波多野 | 久久久久久毛片免费播放 | 久久久青青久久国产精品 | 国产精品久久久久久久福利院 | 性做久久久久久免费观看 | 十八女人毛片 | 久久国产精品亚洲77777 | 国产伦一区二区三区四区久久 | 天天爱夜夜操 | 欧美一级毛片欧美一级无片 | 狠狠操夜夜爽 | 久久福利网 | 关婷哪一级毛片高清免费看 | 日韩成人综合网 | 97免费视频在线观看 | 日韩一区二区三区免费 | 狠狠做深爱婷婷久久一区 | 国产国产精品四虎视频精品 | 99热成人精品国产免男男 | 久久午夜剧场 | 玖玖视频精品 | 中文字幕日韩精品在线 | 成人18免费网站 | 色一情一乱一伦麻豆 | 久久国产乱子伦精品免费看 | 天天操夜夜爱 | 日韩欧美一区二区久久黑人 | 无遮挡一级毛片呦女视频 |