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

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條評論
主站蜘蛛池模板: 阿v视频在线观看免费播放 阿v天堂2017 | 国内在线精品 | 成人性生活免费看 | 狼人综合伊人 | 免费h片在线观看网址最新 免费v片在线观看无遮挡 | sese在线播放| 老妇色 | 又黄又爽又成人免费视频 | 美女羞羞免费网站 | 99在线播放 | 亚洲第99页 | 日本综合在线观看 | 色啦啦在线观看 | 国产一区二区三区视频在线观看 | 幻女bbwxxxxyounu | 一本大道加勒比久久综合 | 欧美性理论片在线观看片免费 | 91伊人影院 | 欧美日韩国产一区三区 | 日本色吧 | 日日撸夜夜撸网站 | 欧美国产伦久久久久 | 一区二区三区在线观看视频 | 午夜体验 | 午夜久久久久久网站 | 嘿咻嘿咻免费区在线观看吃奶 | 香蕉视频伊人 | 国产精品久久久久尤物 | 夜色福利久久久久久777777 | 国产成人精品区在线观看 | 国产成人不卡亚洲精品91 | 在线亚洲欧美日韩 | 五月天婷婷在线视频国产在线 | 亚洲国产精品一区二区久久 | a在线观看免费 | www.欧美| 久久精品视频6 | 天天操天天操天天操香蕉 | 天天射天天操天天干 | 久久精品视频热 | 九九影院在线观看 |