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

工廠方法模式示例

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

在這裡插入圖片描述

代碼結構如下:

在這裡插入圖片描述

代碼如下:

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轉換器");
    }
}
public class TxtConvertor implements Convertor {
    @Override
    public void transform() {
        System.out.println("txt文件轉換器");
    }
}

測試代碼如下:

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

運行結果:

在這裡插入圖片描述

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

抽象工廠模式驗證

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

在這裡插入圖片描述

代碼結構如下:

在這裡插入圖片描述

代碼如下:

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();
    }
}

運行結果如下:

在這裡插入圖片描述

驗證結論:抽象工廠模式與工廠方法模式很類似,工廠方法模式提供瞭一個生產對象的方法,而抽象工廠模式提供多個i生產不同對象的方法,此種設計符合開閉原則,程序易維護、易擴展,如:該遊戲系統需要在鴻蒙系統上運行,則需要新開發一個具體的鴻蒙工廠,及與鴻蒙操作系統相關的界面控制類與遊戲操作類即可。另外,需要註意的是,抽象工廠模式在擴展產品族時很容易,但是在產品等級結構發生變化時,非常不容易。

結論

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

以上就是java開發的工廠方法模式及抽象工廠驗證示例的詳細內容,更多關於java工廠方法模式及抽象工廠驗證的資料請關註WalkonNet其它相關文章!

推薦閱讀: