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

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條評論
主站蜘蛛池模板: 天天爽夜夜爽天天做夜夜做 | 视频国产免费 | 啪啪毛片 | 久久久久青草 | 久久精品国产三级不卡 | 欧美性啪啪 | 欧美亚洲国产精品久久高清 | 黄wwwwww| 日本一级片网站 | 亚洲一区二区三区视频 | 久久9966精品国产免费 | 超碰人人操 | 久久综合给合久久狠狠狠色97 | 在线观看视频一区 | 亚洲九九爱 | 伊人国产视频 | 精品免费久久久久久影院 | 久久精品卫校国产小美女 | 日本不卡免费一区 | 日韩不卡高清视频 | 亚洲免费色视频 | 99精品国产久热在线观看66 | 午夜免费福利社 | 尹人香蕉99久久综合网站 | 亚洲最大成人综合网 | 夜夜操夜夜 | 成人亚洲在线观看 | 久久伊人最新 | 成人免费大片a毛片 | 欧美一级视频在线观看欧美 | 九九99久久精品在免费线bt | 国产97色在线 | 亚洲 | 国内精品一区二区 | 奇米第四色在线视频 | 久久精品国产亚洲a不卡 | 手机看片自拍日韩日韩高清 | 国产在线精品网址你懂的 | 男人午夜剧场 | 午夜国产精品影院在线观看 | 亚洲人成影院在线高清 | 久久精品视频8 |