您好,登錄后才能下訂單哦!
一、場景描述
接《Java設(shè)計模式(一)工廠模式》
工廠模式有一缺點,就是破壞了類的封閉性原則。例如,如果需要增加Word文件的數(shù)據(jù)采集,此時按以下步驟操作:
步驟2修改了工廠類,如果每增加一實現(xiàn)類都需要修改工廠類,那么這樣就不合理了。
解決辦法是使用抽象工廠類,為每一個實現(xiàn)類都創(chuàng)建其工廠類,并增加工廠接口,使各工廠類實現(xiàn)該接口。
使用抽象工廠后,上述步驟更改為:
修改后,由于對工廠類進行了抽象,定義了工廠接口,因此新增實現(xiàn)類時不再需要修改原有代碼,不破壞原有實現(xiàn)。
如下圖所示:
二、示例代碼
儀器數(shù)據(jù)采集接口:
package lims.designpatterndemo.abstractfactorydemo; public interface EquipmentDataCapture { public String capture(String filePath); }
PDF文件采集類:
package lims.designpatterndemo.abstractfactorydemo; public class PdfFileCapture implements EquipmentDataCapture{ @Override public String capture(String filePath) { return "PDF file content"; } }
Excel文件采集類:
package lims.designpatterndemo.abstractfactorydemo; public class ExcelFileCapture implements EquipmentDataCapture{ @Override public String capture(String filePath) { return "Excel File Content"; } }
抽象工廠,即工廠接口:
package lims.designpatterndemo.abstractfactorydemo; public interface EquipmentDataCaptureFactory { public EquipmentDataCapture getCapture(); }
PDF文件采集工廠類:
package lims.designpatterndemo.abstractfactorydemo; public class PdfFileCaptureFactory implements EquipmentDataCaptureFactory { @Override public EquipmentDataCapture getCapture() { return new PdfFileCapture(); } }
Excel文件采集工廠類:
package lims.designpatterndemo.abstractfactorydemo; public class ExcelFileCaptureFactory implements EquipmentDataCaptureFactory { @Override public EquipmentDataCapture getCapture() { return new ExcelFileCapture(); } }
調(diào)用示例:
package lims.designpatterndemo.abstractfactorydemo; public class AbstractFactoryDemo { public static void main(String[] args) { EquipmentDataCaptureFactory facotry = new PdfFileCaptureFactory(); facotry = new ExcelFileCaptureFactory(); EquipmentDataCapture capture = facotry.getCapture(); String fileContent = capture.capture(""); System.out.println(fileContent); } }
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持億速云。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。