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)換器,滿足開閉原則,在類的劃分上滿足單一職責原則,使得程序易擴展、易維護等特征;同時調(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中Final關(guān)鍵字的使用技巧及其性能優(yōu)勢詳解
這篇文章主要介紹了Java中Final關(guān)鍵字的使用技巧及其性能優(yōu)勢詳解,Java中的final關(guān)鍵字用于修飾變量、方法和類,可以讓它們在定義后不可更改,從而提高程序的穩(wěn)定性和可靠性,此外,final關(guān)鍵字還有一些使用技巧和性能優(yōu)勢,需要的朋友可以參考下2023-10-10
SpringBoot項目中使用Sharding-JDBC實現(xiàn)讀寫分離的詳細步驟
Sharding-JDBC是一個分布式數(shù)據(jù)庫中間件,它不僅支持數(shù)據(jù)分片,還可以輕松實現(xiàn)數(shù)據(jù)庫的讀寫分離,本文介紹如何在Spring Boot項目中集成Sharding-JDBC并實現(xiàn)讀寫分離的詳細步驟,需要的朋友可以參考下2024-08-08
Java實現(xiàn)異步執(zhí)行的8種方式總結(jié)
這篇文章主要給大家介紹了關(guān)于Java實現(xiàn)異步執(zhí)行的8種方式,異步編程不會阻塞程序的執(zhí)行,它將耗時的操作提交給后臺線程或其他執(zhí)行環(huán)境,并立即返回,使得程序可以繼續(xù)執(zhí)行其他任務(wù),需要的朋友可以參考下2023-09-09

