中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁 > news >正文

微信公眾號怎樣做淘客網(wǎng)站重慶網(wǎng)站搭建

微信公眾號怎樣做淘客網(wǎng)站,重慶網(wǎng)站搭建,多網(wǎng)站系統(tǒng),wordpress幻燈片簡碼目錄 什么是抽象工廠模式? 定義 特點 抽象工廠模式(java代碼示例) 首先定義第一個接口 實現(xiàn)第一個接口的類 定義第二個接口 實現(xiàn)第二個接口的類 * 創(chuàng)建抽象工廠類 創(chuàng)建擴(kuò)展了 AbstractFactory 的工廠類 飲料工廠 食物工廠 * 創(chuàng)建一個…

目錄

什么是抽象工廠模式?

定義

特點

抽象工廠模式(java代碼示例)

首先定義第一個接口?

實現(xiàn)第一個接口的類

定義第二個接口

實現(xiàn)第二個接口的類

?* 創(chuàng)建抽象工廠類

創(chuàng)建擴(kuò)展了 AbstractFactory 的工廠類

????????飲料工廠

????????食物工廠

?* 創(chuàng)建一個工廠生成器類

測試類:

運(yùn)行結(jié)果:

抽象工廠模式的優(yōu)缺點

優(yōu)點:

缺點:

總結(jié):


什么是抽象工廠模式?

定義

抽象工廠模式(Abstract Factory Pattern),它圍繞一個超級工廠創(chuàng)建其他工廠。該超級工廠又稱為其他工廠的工廠。它也是一種創(chuàng)建型設(shè)計模式,提供了一種創(chuàng)建對象的最佳方式。

特點

在抽象工廠模式中,接口是負(fù)責(zé)創(chuàng)建一個相關(guān)對象的工廠,不需要顯式指定它們的類。每個生成的工廠都能按照工廠模式提供對象。

抽象工廠模式提供了一種創(chuàng)建一系列相關(guān)或相互依賴對象的接口,而無需指定具體實現(xiàn)類。通過使用抽象工廠模式,可以將客戶端與具體產(chǎn)品的創(chuàng)建過程解耦,使得客戶端可以通過工廠接口來創(chuàng)建一族產(chǎn)品。

抽象工廠模式(java代碼示例)

首先定義第一個接口?

(飲料:Drinks)

public interface Drinks {void product();
}

實現(xiàn)第一個接口的類

(類:茶、可樂、礦泉水)

public class Tea implements Drinks {@Overridepublic void product(){System.out.println("飲料——茶");}
}
public class Cola implements Drinks {@Overridepublic void product(){System.out.println("飲料——可樂");}
}
public class MineralWater implements Drinks {@Overridepublic void product(){System.out.println("飲料——礦泉水");}
}

定義第二個接口

(食物:Foods)

public interface Foods {void product();
}

實現(xiàn)第二個接口的類

public class Chicken implements Foods {@Overridepublic void product(){System.out.println("食物——雞肉");}
}
public class Beaf implements Foods {@Overridepublic void product(){System.out.println("食物——牛肉");}
}
public class Fish implements Foods {@Overridepublic void product(){System.out.println("食物——魚肉");}
}

.......................................

????????????????( 相似地,可以繼續(xù)定義n個接口,然后用類實現(xiàn)這些接口。)

?* 創(chuàng)建抽象工廠類

public abstract class AbstractFactory {public abstract Drinks getDrinks(String drinks);public abstract Foods getFoods(String foods);//上邊創(chuàng)建了多少被實現(xiàn)的接口,這里就可以創(chuàng)建多少個方法
}

????????????????(上邊創(chuàng)建了多少被實現(xiàn)的接口,這里就可以創(chuàng)建多少個方法)

創(chuàng)建擴(kuò)展了 AbstractFactory 的工廠類

(基于給定的信息生成實體類的對象)

????????飲料工廠
public class DrinksFactory extends AbstractFactory {@Overridepublic Drinks newDrinks(String DrinksType){if(DrinksType.equals(("茶"))){return new Tea();}else if(DrinksType.equals("可樂")){return new Cola();}else if(DrinksType.equals("礦泉水")){return new MineralWater();}else {System.out.println("暫時沒有這種飲料");return null;}}@Overridepublic Foods newFoods(String FoodsType){return null;}
}
????????食物工廠
public class FoodsFactory extends AbstractFactory {@Overridepublic Drinks newDrinks(String DrinksType){return null;}@Overridepublic Foods newFoods(String FoodsType){if(FoodsType.equals(("雞肉"))){return new Chicken();}else if(FoodsType.equals("魚肉")){return new Fish();}else if(FoodsType.equals("牛肉")){return new Beaf();}else {System.out.println("暫時沒有這種食物");return null;}}
}

? ? ? ? ? (這里麻煩的是,每一個具體的工廠,沒有辦法只重載自己所需要的方法,都需要將 AbstractFactory 中所有的方法@Override。否則會報錯,這是抽象工廠模式的缺點之一。)

?* 創(chuàng)建一個工廠生成器類

(通過傳遞 “選擇” 信息來獲取工廠)

public class FactoryProducer {public static AbstractFactory getFactory(String choice){if(choice.equalsIgnoreCase("食物")){return new FoodsFactory();} else if(choice.equalsIgnoreCase("飲料")){return new DrinksFactory();}else {System.out.println("暫時沒有該工廠");return null;}}
}

測試類:

public class Test {public static void main(String[] args) {AbstractFactory foodsFactory = FactoryProducer.getFactory("食物");AbstractFactory foodsFactory2 = FactoryProducer.getFactory("飲料");AbstractFactory foodsFactory3 = FactoryProducer.getFactory("衣服");Foods foods = foodsFactory.newFoods("魚肉");foods.product();Foods foods2 = foodsFactory.newFoods("雞肉");foods2.product();Foods foods3 = foodsFactory.newFoods("牛肉");foods3.product();Foods foods4 = foodsFactory.newFoods("豬肉");Drinks drinks = foodsFactory2.newDrinks("可樂");drinks.product();Drinks drinks2 = foodsFactory2.newDrinks("礦泉水");drinks.product();Drinks drinks3 = foodsFactory2.newDrinks("茶");drinks.product();Drinks drinks4 = foodsFactory2.newDrinks("啤酒");}
}
運(yùn)行結(jié)果:

抽象工廠模式的優(yōu)缺點

優(yōu)點:

客戶端獨立于具體的實現(xiàn)類:客戶端使用抽象工廠來創(chuàng)建產(chǎn)品,而不需要關(guān)心具體的實現(xiàn)類。這樣可以降低客戶端與具體實現(xiàn)類之間的耦合度。

易于切換產(chǎn)品系列:由于客戶端只使用抽象工廠來創(chuàng)建產(chǎn)品,所以只需要切換具體的工廠實現(xiàn)類,就可以切換到不同的產(chǎn)品系列。

確保產(chǎn)品組合的一致性:每個具體工廠負(fù)責(zé)創(chuàng)建一個產(chǎn)品系列,這確保了產(chǎn)品之間的一致性。

支持產(chǎn)品等級結(jié)構(gòu):抽象工廠模式提供了一種支持產(chǎn)品等級結(jié)構(gòu)的方式,可以很容易地增加新的產(chǎn)品。

缺點:

難以支持新種類的產(chǎn)品:如果需要添加一個新種類的產(chǎn)品,則需要修改抽象工廠接口以及所有的具體工廠實現(xiàn)。 (上述java代碼 “ 創(chuàng)建擴(kuò)展了 AbstractFactory 的工廠類 ” 中@Override)
由于引入了抽象層,增加了系統(tǒng)的抽象性和理解難度。對于不熟悉該模式的開發(fā)人員來說,理解工廠方法的作用和應(yīng)用場景可能會有一些困難。

總結(jié):

抽象工廠模式與工廠模式都使客戶端使用抽象工廠來創(chuàng)建產(chǎn)品,而不需要關(guān)心具體的實現(xiàn)類。

抽象工廠模式可以很容易的增加某個種類里的新產(chǎn)品,但是增加新種類有些許困難(舉例:在“飲料”中增加新飲品“雪碧”很簡單,但在“工廠”中增加新的“甜品工廠”難)

http://www.risenshineclean.com/news/51456.html

相關(guān)文章:

  • 上海企業(yè)名錄地址電話seo網(wǎng)絡(luò)推廣
  • 桂林億星網(wǎng)絡(luò)科技公司百度seo排名優(yōu)化是什么
  • 訪問網(wǎng)站提示輸入用戶名密碼網(wǎng)絡(luò)推廣營銷培訓(xùn)機(jī)構(gòu)
  • 青海西寧網(wǎng)站建設(shè)公司電腦編程培訓(xùn)學(xué)校
  • 龍華做棋牌網(wǎng)站建設(shè)網(wǎng)站收錄服務(wù)
  • 建設(shè)科技信息+網(wǎng)站建設(shè)外貿(mào)網(wǎng)站建設(shè)
  • java開發(fā)門戶網(wǎng)站搜索引擎入口google
  • 縣城做信息網(wǎng)站賺不賺錢搜索關(guān)鍵詞
  • 學(xué)做網(wǎng)站論壇vip賬號破解360手機(jī)助手
  • 企業(yè)型網(wǎng)站建設(shè)咨詢電話百度搜索引擎網(wǎng)站
  • 獨立網(wǎng)站開發(fā)者兼職網(wǎng)站seo外包公司報價
  • 德州做網(wǎng)站的公司有哪些千萬別在百度上搜別人名字
  • 南昌優(yōu)化網(wǎng)站服務(wù)哪里有免費(fèi)的網(wǎng)站推廣
  • 織夢做的網(wǎng)站怎么加彈窗哪里有軟件培訓(xùn)班
  • 免費(fèi)域名網(wǎng)站推薦關(guān)鍵詞優(yōu)化師
  • 怎么做新聞網(wǎng)站網(wǎng)站友情鏈接購買
  • wordpress收費(fèi)破解模板搜索優(yōu)化seo
  • 武漢疫情最新消息今天佛山百度快照優(yōu)化排名
  • 莆田建站培訓(xùn)seo實戰(zhàn)密碼第四版pdf
  • 新聞網(wǎng)站策劃方案seo綜合查詢網(wǎng)站源碼
  • 網(wǎng)站建設(shè)對標(biāo)行業(yè)分析站內(nèi)優(yōu)化
  • 網(wǎng)站主辦者刷推廣鏈接人數(shù)的軟件
  • 網(wǎng)站追蹤如何做免費(fèi)找客戶軟件
  • .net 建網(wǎng)站線上教育培訓(xùn)機(jī)構(gòu)十大排名
  • 開發(fā)網(wǎng)站設(shè)計百度競價推廣開戶價格
  • 網(wǎng)站建設(shè)方案 安全優(yōu)化營商環(huán)境心得體會2023
  • 做網(wǎng)站怎么讓百度收錄了高質(zhì)量外鏈代發(fā)
  • web程序設(shè)計與實踐做網(wǎng)站搜索引擎關(guān)鍵詞優(yōu)化技巧
  • 上海網(wǎng)站建設(shè)工作室微博推廣平臺
  • 四川住建廳官方網(wǎng)站的網(wǎng)址樂云seo