最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

工廠方法模式示例

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

在這里插入圖片描述

代碼結(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)換器");
    }
}

測(cè)試代碼如下:

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

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

在這里插入圖片描述

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

抽象工廠模式驗(yàn)證

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

在這里插入圖片描述

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

在這里插入圖片描述

代碼如下:

public interface InterfaceController {
    void init();
}
public class IosInterfaceControllerImpl implements InterfaceController {
    @Override
    public void init() {
        System.out.println("蘋(píng)果界面");
    }
}
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("蘋(píng)果操作邏輯");
    }
}
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();
    }
}

測(cè)試代碼如下:

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

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

在這里插入圖片描述

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

結(jié)論

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

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

相關(guān)文章

  • Java中Final關(guān)鍵字的使用技巧及其性能優(yōu)勢(shì)詳解

    Java中Final關(guān)鍵字的使用技巧及其性能優(yōu)勢(shì)詳解

    這篇文章主要介紹了Java中Final關(guān)鍵字的使用技巧及其性能優(yōu)勢(shì)詳解,Java中的final關(guān)鍵字用于修飾變量、方法和類(lèi),可以讓它們?cè)诙x后不可更改,從而提高程序的穩(wěn)定性和可靠性,此外,final關(guān)鍵字還有一些使用技巧和性能優(yōu)勢(shì),需要的朋友可以參考下
    2023-10-10
  • Java 判斷實(shí)體對(duì)象及所有屬性是否為空的操作

    Java 判斷實(shí)體對(duì)象及所有屬性是否為空的操作

    這篇文章主要介紹了Java 判斷實(shí)體對(duì)象及所有屬性是否為空的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-12-12
  • SpringBoot啟動(dòng)及自動(dòng)裝配原理過(guò)程詳解

    SpringBoot啟動(dòng)及自動(dòng)裝配原理過(guò)程詳解

    這篇文章主要介紹了SpringBoot啟動(dòng)及自動(dòng)裝配原理過(guò)程詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-04-04
  • Java面試突擊之Bean作用域詳解

    Java面試突擊之Bean作用域詳解

    Spring?框架作為一個(gè)管理?Bean?的?IoC?容器,那么?Bean?自然是?Spring?中的重要資源了,那?Bean?的作用域是什么意思?又有幾種類(lèi)型呢?接下來(lái)我們一起來(lái)看
    2022-08-08
  • Java中的并發(fā)工具類(lèi)詳細(xì)解析

    Java中的并發(fā)工具類(lèi)詳細(xì)解析

    這篇文章主要介紹了Java中的并發(fā)工具類(lèi)詳細(xì)解析,CountDownLatch、 CyclicBarrier 和 Semaphore 工具類(lèi)提供了一種并發(fā)流程控制的手段,Exchanger 工具類(lèi)則提供了在線程間交換數(shù)據(jù)的一種手段,需要的朋友可以參考下
    2023-12-12
  • 深入理解Mybatis一級(jí)緩存

    深入理解Mybatis一級(jí)緩存

    客戶端向數(shù)據(jù)庫(kù)服務(wù)器發(fā)送同樣的sql查詢語(yǔ)句,如果每次都去訪問(wèn)數(shù)據(jù)庫(kù),會(huì)導(dǎo)致性能的降低,那么怎么提高呢?下面小編給大家分享下mybatis為我們提供了一級(jí)緩存的策略
    2016-12-12
  • EL表達(dá)式簡(jiǎn)介_(kāi)動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

    EL表達(dá)式簡(jiǎn)介_(kāi)動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

    EL全名為Expression Language,這篇文章主要給大家介紹EL表達(dá)式的主要作用及內(nèi)容簡(jiǎn)介,感興趣的朋友一起看看
    2017-07-07
  • spring cloud 配置中心native配置方式

    spring cloud 配置中心native配置方式

    這篇文章主要介紹了spring cloud 配置中心native配置方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • SpringBoot項(xiàng)目中使用Sharding-JDBC實(shí)現(xiàn)讀寫(xiě)分離的詳細(xì)步驟

    SpringBoot項(xiàng)目中使用Sharding-JDBC實(shí)現(xiàn)讀寫(xiě)分離的詳細(xì)步驟

    Sharding-JDBC是一個(gè)分布式數(shù)據(jù)庫(kù)中間件,它不僅支持?jǐn)?shù)據(jù)分片,還可以輕松實(shí)現(xiàn)數(shù)據(jù)庫(kù)的讀寫(xiě)分離,本文介紹如何在Spring Boot項(xiàng)目中集成Sharding-JDBC并實(shí)現(xiàn)讀寫(xiě)分離的詳細(xì)步驟,需要的朋友可以參考下
    2024-08-08
  • Java實(shí)現(xiàn)異步執(zhí)行的8種方式總結(jié)

    Java實(shí)現(xiàn)異步執(zhí)行的8種方式總結(jié)

    這篇文章主要給大家介紹了關(guān)于Java實(shí)現(xiàn)異步執(zhí)行的8種方式,異步編程不會(huì)阻塞程序的執(zhí)行,它將耗時(shí)的操作提交給后臺(tái)線程或其他執(zhí)行環(huán)境,并立即返回,使得程序可以繼續(xù)執(zhí)行其他任務(wù),需要的朋友可以參考下
    2023-09-09

最新評(píng)論

文山县| 隆昌县| 平山县| 瑞金市| 武安市| 黎城县| 潍坊市| 喀喇沁旗| 绥棱县| 晋城| 新晃| 讷河市| 桂林市| 邢台县| 云梦县| 清镇市| 广水市| 云梦县| 湟中县| 东丽区| 宽城| 扶风县| 西充县| 精河县| 吉首市| 虎林市| 时尚| 枣阳市| 石楼县| 濉溪县| 太仆寺旗| 襄垣县| 无极县| 东城区| 开化县| 澄迈县| 会泽县| 娄烦县| 农安县| 磐安县| 南靖县|