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

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條評論
主站蜘蛛池模板: 午夜国产福利在线观看 | 91久久亚洲国产成人精品性色 | 337p欧美超大胆日本人术艺术 | 久久精品久久精品国产大片 | 80岁老妇xxxxx高清 | 久久99久久成人免费播放 | 国产精品免费一区二区区 | 亚洲成人在线免费视频 | 久久精品麻豆 | 国产精品久久久久久久久kt | 色视频在线免费 | 尹人香蕉网 | 国产欧美日韩看片片在线人成 | 国产一区免费观看 | 亚欧在线精品免费观看一区 | 四虎精品免费视频 | 天天干天天插天天射 | 99这里只有精品66视频 | 国产精品成人免费视频 | 97se色综合一区二区二区 | 精品国产欧美一区二区三区成人 | 欧美一级久久久久久久大 | 99久久免费国产精品 | 久久免费资源福利资源站 | 四虎影院新地址 | 视频一区亚洲 | 成人综合久久精品色婷婷 | 亚洲欧美日韩综合一区久久 | 午夜私人影院粉色视频我要 | 婷婷国产| 成人看免费一级毛片 | 四虎永久在线精品国产免费 | 天天艹天天操 | 成人在线视频免费观看 | 日韩欧美亚洲每日更新网 | 日本一区二区三区高清在线观看 | 欧美大片aaaa一级毛片 | 99久久精品国产交换 | 国产乳摇福利视频在线观看 | 亚洲国产图片 | 日韩精品一区二区三区在线观看l |