老熟女激烈的高潮_日韩一级黄色录像_亚洲1区2区3区视频_精品少妇一区二区三区在线播放_国产欧美日产久久_午夜福利精品导航凹凸

重慶分公司,新征程啟航

為企業提供網站建設、域名注冊、服務器等服務

Java描述設計模式(03):工廠方法模式

本文源碼:GitHub·點這里 || GitEE·點這里

郴州網站建設公司成都創新互聯,郴州網站設計制作,有大型網站制作公司豐富經驗。已為郴州上千多家提供企業網站建設服務。企業網站搭建\成都外貿網站制作要多少錢,請找那個售后服務好的郴州做網站的公司定做!

一、工廠方法模式

1、生活場景

系統常見的數據導出功能:數據導出PDF、WORD等常見格式。

2、工廠方法模式

是類的創建模式,又叫做虛擬構造子(Virtual Constructor)模式或者多態性工廠(Polymorphic Factory)模式。工廠方法模式的用意是定義一個創建產品對象的工廠接口,將實際創建工作推遲到子類中。

3、核心角色

1)、抽象工廠角色
這個角色的是工廠方法模式的核心,任何在模式中創建對象的工廠類必須實現這個接口。在實際的系統中,這個角色也常常使用抽象類實現。

2)、具體工廠角色
擔任這個角色的是實現了抽象工廠接口的具體JAVA類。具體工廠角色含有與業務密切相關的邏輯,并且受到使用者的調用以創建導出類。

3)、抽象導出角色
工廠方法模式所創建的對象的超類,也就是所有導出類的共同父類或共同擁有的接口。在實際的系統中,這個角色也常常使用抽象類實現。

4)、具體導出角色
這個角色實現了抽象導出角色所聲明的接口,工廠方法模式所創建的每一個對象都是某個具體導出角色的實例。

4、代碼UML關系圖

Java描述設計模式(03):工廠方法模式

5、源代碼實現

// 客戶端角色
public class C01_FactoryMethod {
    public static void main(String[] args) {
        String data = "" ;
        ExportFactory factory = new ExportWordFactory () ;
        ExportFile exportWord = factory.factory("user-word") ;
        exportWord.export(data) ;
        factory = new ExportPdfFactory() ;
        ExportFile exportPdf =factory.factory("log-pdf") ;
        exportPdf.export(data) ;
    }
}
// 抽象工廠角色
interface ExportFactory {
    ExportFile factory (String type) ;
}
// 具體工廠角色
class ExportWordFactory implements ExportFactory {
    @Override
    public ExportFile factory(String type) {
        if ("user-word".equals(type)){
            return new ExportUserWordFile() ;
        } else if ("log-word".equals(type)){
            return new ExportLogWordFile() ;
        } else {
            throw new RuntimeException("沒有找到對象") ;
        }
    }
}
class ExportPdfFactory implements ExportFactory {
    @Override
    public ExportFile factory(String type) {
        if ("user-pdf".equals(type)){
            return new ExportUserPdfFile() ;
        } else if ("log-pdf".equals(type)){
            return new ExportLogPdfFile() ;
        } else {
            throw new RuntimeException("沒有找到對象") ;
        }
    }
}
// 抽象導出角色
interface ExportFile {
    boolean export (String data) ;
}
// 具體導出角色
class ExportUserWordFile implements ExportFile {
    @Override
    public boolean export(String data) {
        System.out.println("導出用戶Word文件");
        return true;
    }
}
class ExportLogWordFile implements ExportFile {
    @Override
    public boolean export(String data) {
        System.out.println("導出日志Word文件");
        return true;
    }
}
class ExportUserPdfFile implements ExportFile {
    @Override
    public boolean export(String data) {
        System.out.println("導出用戶Pdf文件");
        return true;
    }
}
class ExportLogPdfFile implements ExportFile {
    @Override
    public boolean export(String data) {
        System.out.println("導出日志Pdf文件");
        return true;
    }
}

二、Spring框架中應用

1、場景描述

基于spring框架的配置實現如下流程:汽車工廠根據不同的國家,生產不同類型的汽車。

2、核心工廠類

public class ProductCar implements CarFactory {
    private Map carMap = null;
    public ProductCar() {
        carMap = new HashMap<>();
        carMap.put("china", new CarEntity("中國", "黑色","紅旗"));
        carMap.put("america", new CarEntity("美國", "白色","雪佛蘭"));
    }
    @Override
    public CarEntity getCar(String type) {
        return carMap.get(type);
    }
}

3、核心Xml配置文件



    


    

4、測試類

1)、代碼塊

public class SpringTest {
    @Test
    public void test01 (){
        ApplicationContext context01 = new ClassPathXmlApplicationContext("/spring/spring-factorymethod.xml");
        CarEntity car1 = (CarEntity)context01.getBean("car1") ;
        CarEntity car2 = (CarEntity)context01.getBean("car2") ;
        System.out.println(car1);
        System.out.println(car2);
    }
}

2)、輸出結果

CarEntity{country='中國', color='黑色', name='紅旗'}
CarEntity{country='美國', color='白色', name='雪佛蘭'}

三、工廠方法小結

工廠方法中,把創建類的動作延遲,就是通過對應的工廠來生成類的對象,這種設計方式符合“開閉”原則。缺點就是當產品的種類過多的時候,需要定義很多產品對應的工廠類。

四、源代碼地址

GitHub·地址
https://github.com/cicadasmile/model-arithmetic-parent
GitEE·地址
https://gitee.com/cicadasmile/model-arithmetic-parent

Java描述設計模式(03):工廠方法模式


網頁名稱:Java描述設計模式(03):工廠方法模式
轉載注明:http://www.xueling.net.cn/article/jggjch.html

其他資訊

在線咨詢
服務熱線
服務熱線:028-86922220
TOP
主站蜘蛛池模板: 亚洲成年 | 狠狠躁夜夜躁人人躁婷婷视频 | 久热亚洲| 久久22| 国产精品丝袜黑色高跟鞋 | 国产区在线观看成人精品 | 国产一区不卡视频 | 一区二区三区四区国产精品视频 | 中文一区在线观看 | 91九色视频在线播放 | 无遮挡边吃摸边吃奶边做 | 久久中文字幕无码A片不卡男同 | 调教一区 | GOGOGO免费高清日本TV | 天天做天天爱夜夜爽少妇 | 精品欧美日韩国产日漫一区不卡 | 日本免费一区二区三区最新 | 国产V精品V欧美V日韩V | 久久久久久亚洲AV无码蜜芽 | 粉嫩大学生无套内射无码卡视频 | 亚洲国产影院 | 午夜精品久久久久影视 | 日韩人妻无码一区二区三区综合部 | 97精品依人久久久大香线蕉97 | 日本一区视频在线 | 久久人人做人人爽人人AV | 久久久国产精品无码一区二区 | 日韩在线第一区 | 白丝女仆裸体被强趴内裤啪啪 | 国产精品丝袜黑色高跟鞋 | 四虎最新网址在线观看 | 高潮真紧好爽我视频 | 浮生影院免费观看中文版 | 日本视频网 | 亚洲欧美不卡视频在线播放 | 新婚少妇初尝禁果 | 日本免费AⅤ欧美在线观看 婷婷色五月综合久久 | 国产精品手机视频一区二区 | 亚洲AV无码精品国产成人 | 亚洲精品久久国产高清情趣图文 | 亚洲在av极品无码天堂手机版 |