日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

创建型模式——抽象工厂模式

發布時間:2023/12/4 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 创建型模式——抽象工厂模式 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、 實驗目的與要求

1.練習使用工廠模式。設計相關的模擬場景并進行實施,驗證模式特性,掌握其優缺點。
2.實驗結束后,對相關內容進行總結。

二、實驗內容

1.模式應用場景說明

手機CPU生產工廠:在一個工廠里面,有Apple和Huawei兩種生產線。Huawei可以生產Huawei電腦和Huawei手機,APPLE可以生產APPLE電腦和APPLE手機。解決這個問題,可以抽象一個電器生產廠。下面有兩個具體的工程,一個叫Huawei工廠,一個叫APPLE工廠。有兩條生產線,一條生產線可以生產APPLE電腦和Huawei電腦,另一條生產線可以生產APPLE手機和Huawei手機。

2.應用場景類圖

3.實現代碼與解釋

3.1抽象產品類Phone

package 抽象工廠模式; public interface Phone {public void play(); }

3.2具體產品類ApplePhone

package 抽象工廠模式; public class ApplePhone implements Phone {public void play() {System.out.println("Apple手機使用中...");} }

3.3具體產品類 HuaweiPhone

package 抽象工廠模式; public class HuaweiPhone implements Phone {public void play() {System.out.println("Huawei手機使用中...");} }

3.4抽象產品類Computer

package 抽象工廠模式; public interface Computer {public void useComputer(); }

3.5具體產品類AppleComputer

package 抽象工廠模式; public class AppleComputer implements Computer{public void useComputer() {System.out.println("Apple電腦使用中...");} }

3.6具體產品類 HuaweiComputer

package 抽象工廠模式; public class HuaweiComputer implements Computer{public void useComputer() {System.out.println("Huawei電腦使用中...");} }

3.7 抽象工廠類EFactory

package 抽象工廠模式; public interface EFactory {public Phone producePhone();public Computer produceComputer(); }

3.8具體工廠類HuaweiFactory

package 抽象工廠模式; public class HuaweiFactory implements EFactory{public Phone producePhone() {return new HuaweiPhone();}public Computer produceComputer() {return new HuaweiComputer();} }

3.9具體工廠類AppleFactory

package 抽象工廠模式; public class AppleFactory implements EFactory{public Phone producePhone() {return new ApplePhone();}public Computer produceComputer() {return new AppleComputer();} }

3.7輔助代碼:獲取外界配置文件的信息

package 抽象工廠模式; import javax.xml.parsers.*; import org.w3c.dom.*; import org.xml.sax.SAXException; import java.io.*; public class XMLUtil { //該方法用于從XML配置文件中提取具體類類名,并返回一個實例對象public static Object getBean(){try{//創建文檔對象DocumentBuilderFactory dFactory = DocumentBuilderFactory.newInstance();DocumentBuilder builder = dFactory.newDocumentBuilder();Document doc; doc = builder.parse(new File("F:\\創建型模式\\抽象工廠模式\\抽象工廠模式\\src\\抽象工廠模式\\config.xml")); //獲取包含類名的文本節點NodeList nl = doc.getElementsByTagName("className");Node classNode=nl.item(0).getFirstChild();String cName=classNode.getNodeValue();//通過類名生成實例對象并將其返回Class c=Class.forName("抽象工廠模式."+cName);Object obj=c.newInstance();return obj;} catch(Exception e){e.printStackTrace();return null;}} }

3.8外界配置文件

4.結果及分析

4.1將配置文件節點改成AppleFactory

4.2將配置文件節點改成HuaweiFactory

三、實驗總結

優點:隔離了具體類的生成,可以是實現高內聚低耦合的設計目的。
缺點:涉及對抽象工廠的角色及其對所有子類的修改,顯然帶來較大的不便。

總結

以上是生活随笔為你收集整理的创建型模式——抽象工厂模式的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。