欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

java開發(fā)的工廠方法模式及抽象工廠驗證示例

 更新時間:2021年10月11日 08:47:57   作者:guoyp2126  
這篇文章主要為大家介紹了java開發(fā)中的工廠方法模式以及抽象工廠的驗證示例,有需要的朋友可以借鑒參考下希望能夠有所幫助祝大家多多進步

工廠方法模式示例

開發(fā)一個數(shù)據(jù)格式轉(zhuǎn)換工具,將不同數(shù)據(jù)源如:txt、excel等格式文件,轉(zhuǎn)換為XML格式輸出,需考慮今后其他格式的文件也需要轉(zhuǎn)換為xml格式的擴展性,利用設(shè)計模式的有關(guān)知識進行設(shè)計。
解決思路,使用工廠方法模式完成該功能的設(shè)計,設(shè)計類圖如下:

在這里插入圖片描述

代碼結(jié)構(gòu)如下:

在這里插入圖片描述

代碼如下:

public interface Creator {
    Convertor getConvertor();
}
public class ExcelConvertorCreator implements Creator {
    @Override
    public Convertor getConvertor() {
        return new ExcelConvertor();
    }
}
public class TxtConvertorCreator implements Creator {
    @Override
    public Convertor getConvertor() {
        return new TxtConvertor();
    }
}
public interface Convertor {
    void transform();
}
public class ExcelConvertor implements Convertor {
    @Override
    public void transform() {
        System.out.println("excel轉(zhuǎn)換器");
    }
}
public class TxtConvertor implements Convertor {
    @Override
    public void transform() {
        System.out.println("txt文件轉(zhuǎn)換器");
    }
}

測試代碼如下:

public class Testor {
    public  void factoryMethodTest() {
        Creator creator = new TxtConvertorCreator();
        Convertor convertor = creator.getConvertor();
        convertor.transform();
    }
}

運行結(jié)果:

在這里插入圖片描述

驗證結(jié)論:使用工廠方法模式完成文件轉(zhuǎn)換器,滿足開閉原則,在類的劃分上滿足單一職責(zé)原則,使得程序易擴展、易維護等特征;同時調(diào)用方依賴于抽象,不依賴于具體,實現(xiàn)了依賴倒置原則,所有的變量使用接口(抽象類)定義,具體的實現(xiàn)類可以替換它,遵循了里氏替換原則。

抽象工廠模式驗證

某公司開發(fā)一個手機游戲軟件,該軟件需要支持IOS、windows Mobile等操作系統(tǒng)平臺,針對不同操作系統(tǒng),提供不同操作控制類和游戲界面控制類,需考慮今后其他操作系統(tǒng)也需要使用這款手游,利用設(shè)計模式的有關(guān)知識進行設(shè)計。
解決思路,使用抽象工廠模式完成該功能的設(shè)計,設(shè)計類圖如下:

在這里插入圖片描述

代碼結(jié)構(gòu)如下:

在這里插入圖片描述

代碼如下:

public interface InterfaceController {
    void init();
}
public class IosInterfaceControllerImpl implements InterfaceController {
    @Override
    public void init() {
        System.out.println("蘋果界面");
    }
}
public class WinInterfaceControllerImpl implements InterfaceController {
    @Override
    public void init() {
        System.out.println("windows界面");
    }
}
public interface OprationController {
    public void init();
}
public class IosOprationControllerImpl implements OprationController {
    @Override
    public void init() {
        System.out.println("蘋果操作邏輯");
    }
}
public class WinOprationControllerImpl implements OprationController {
    @Override
    public void init() {
        System.out.println("windows操作邏輯");
    }
}
public interface AbstractFactory {
  InterfaceController getInterfaceContorller();
  OprationController  getOprationController();
}
public class IosFactoryImpl implements AbstractFactory {
    @Override
    public InterfaceController getInterfaceContorller() {
        return new IosInterfaceControllerImpl();
    }
    @Override
    public OprationController getOprationController() {
        return new IosOprationControllerImpl();
    }
}
public class WinFactoryImpl implements AbstractFactory {
    @Override
    public InterfaceController getInterfaceContorller() {
        return new WinInterfaceControllerImpl();
    }
    @Override
    public OprationController getOprationController() {
        return new WinOprationControllerImpl();
    }
}

測試代碼如下:

public class AbstractFactoryTest {
    public void test(){
    AbstractFactory abstractFactory = new WinFactoryImpl();
    OprationController oprationController = abstractFactory.getOprationController();
    InterfaceController interfaceController = abstractFactory.getInterfaceContorller();
    oprationController.init();
    interfaceController.init();
    }
}

運行結(jié)果如下:

在這里插入圖片描述

驗證結(jié)論:抽象工廠模式與工廠方法模式很類似,工廠方法模式提供了一個生產(chǎn)對象的方法,而抽象工廠模式提供多個i生產(chǎn)不同對象的方法,此種設(shè)計符合開閉原則,程序易維護、易擴展,如:該游戲系統(tǒng)需要在鴻蒙系統(tǒng)上運行,則需要新開發(fā)一個具體的鴻蒙工廠,及與鴻蒙操作系統(tǒng)相關(guān)的界面控制類與游戲操作類即可。另外,需要注意的是,抽象工廠模式在擴展產(chǎn)品族時很容易,但是在產(chǎn)品等級結(jié)構(gòu)發(fā)生變化時,非常不容易。

結(jié)論

以上僅給出示例代碼,非常簡單,為了加深工廠方法模式的體驗,建議大家開發(fā)完整的Txt、Excel文件轉(zhuǎn)換代碼,然后界面層設(shè)計兩個菜單,分別是Txt和Excel轉(zhuǎn)換。抽象工廠模式體驗,則可以查看jdk源碼中java.sql包數(shù)據(jù)庫處理部分源碼。

以上就是java開發(fā)的工廠方法模式及抽象工廠驗證示例的詳細內(nèi)容,更多關(guān)于java工廠方法模式及抽象工廠驗證的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Java MD5消息摘要算法原理及實現(xiàn)代碼

    Java MD5消息摘要算法原理及實現(xiàn)代碼

    這篇文章主要介紹了Java MD5消息摘要算法原理及實現(xiàn)代碼,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-09-09
  • Java?C++題解leetcode1441用棧操作構(gòu)建數(shù)組示例

    Java?C++題解leetcode1441用棧操作構(gòu)建數(shù)組示例

    這篇文章主要為大家介紹了Java?C++題解leetcode1441用棧操作構(gòu)建數(shù)組示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-10-10
  • springboot接收日期類型參數(shù)的操作方法

    springboot接收日期類型參數(shù)的操作方法

    如果使用Get請求,直接使用對象接收,則可以使用@DateTimeFormat注解進行格式化,本文重點給大家介紹springboot接收日期類型參數(shù)的方法,感興趣的朋友一起看看吧
    2024-02-02
  • java整合onlyoffice的各種踩坑記錄

    java整合onlyoffice的各種踩坑記錄

    這篇文章主要給大家介紹了關(guān)于java整合onlyoffice的各種踩坑,OnlyOffice是一種強大的在線協(xié)作軟件,專為企業(yè)和個人設(shè)計,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2023-07-07
  • 使用mybatis插件PageHelper實現(xiàn)分頁效果

    使用mybatis插件PageHelper實現(xiàn)分頁效果

    這篇文章主要為大家詳細介紹了使用mybatis插件PageHelper實現(xiàn)分頁效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-01-01
  • Java中為什么重寫equals()也需要重寫hashCode方法

    Java中為什么重寫equals()也需要重寫hashCode方法

    這篇文章主要介紹了Java中為什么重寫equals()也需要重寫hashCode(),本文通過實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-04-04
  • Java集合和數(shù)組的區(qū)別

    Java集合和數(shù)組的區(qū)別

    本文主要介紹了Java集合和數(shù)組的區(qū)別。具有很好的參考價值,下面跟著小編一起來看下吧
    2017-02-02
  • Java實現(xiàn)雙端鏈表LinkedList

    Java實現(xiàn)雙端鏈表LinkedList

    本文主要介紹了Java實現(xiàn)雙端鏈表LinkedList,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-07-07
  • 關(guān)于使用POI向word中添加圖片的問題

    關(guān)于使用POI向word中添加圖片的問題

    這篇文章主要介紹了關(guān)于使用POI向word中添加圖片的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • springboot定時任務(wù)@Scheduled執(zhí)行多次的問題

    springboot定時任務(wù)@Scheduled執(zhí)行多次的問題

    這篇文章主要介紹了springboot定時任務(wù)@Scheduled執(zhí)行多次問題的解決,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-10-10

最新評論