创建型模式——抽象工厂模式
生活随笔
收集整理的這篇文章主要介紹了
创建型模式——抽象工厂模式
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一、 實驗目的與要求
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
三、實驗總結
優點:隔離了具體類的生成,可以是實現高內聚低耦合的設計目的。
缺點:涉及對抽象工廠的角色及其對所有子類的修改,顯然帶來較大的不便。
總結
以上是生活随笔為你收集整理的创建型模式——抽象工厂模式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 阿里云域名怎么备案(阿里云域名怎么备案视
- 下一篇: android封装好的Color类中的常