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

Java策略模式的簡(jiǎn)單應(yīng)用實(shí)現(xiàn)方法

 更新時(shí)間:2014年02月24日 15:58:38   作者:  
這篇文章主要介紹了Java策略模式的簡(jiǎn)單應(yīng)用實(shí)現(xiàn)方法,需要的朋友可以參考下

在使用圖像處理軟件處理圖片后,需要選擇一種格式進(jìn)行保存。然而各種格式在底層實(shí)現(xiàn)的算法并不相同,這剛好適合策略模式。編寫(xiě)程序,演示如何使用策略模式與簡(jiǎn)單工廠模式組合進(jìn)行開(kāi)發(fā)。

思路如下:

1.使用interface來(lái)定義一個(gè)接口,在該接口中定義save()方法;
2.根據(jù)圖片格式定義不同的類,分別在這些類中使用關(guān)鍵字implements實(shí)現(xiàn)接口;
3.創(chuàng)建一個(gè)實(shí)現(xiàn)選擇的類,在該類中定義實(shí)現(xiàn)選擇的方法,該方法返回值為對(duì)應(yīng)的圖片保存類;
4.在主方法中實(shí)現(xiàn)接口。
代碼如下:

復(fù)制代碼 代碼如下:

public interface ImageSaver {
    void save();//定義save()方法
}

public class GIFSaver implements ImageSaver {
    @Override
    public void save() {//實(shí)現(xiàn)save()方法
        System.out.println("將圖片保存成GIF格式");
    }
}

public class JPEGSaver implements ImageSaver {

    @Override
    public void save() {
        System.out.println("將圖片保存成JPG格式");
    }
}

public class PNGSaver implements ImageSaver {

    @Override
    public void save() {
        System.out.println("將圖片保存成PNG格式");
    }

}

public class TypeChooser {
    public static ImageSaver getSaver(String type) {
        if (type.equalsIgnoreCase("GIF")) {//使用if else語(yǔ)句來(lái)判斷圖片的類型
            return new GIFSaver();
        } else if (type.equalsIgnoreCase("JPEG")) {
            return new JPEGSaver();
        } else if (type.equalsIgnoreCase("PNG")) {
            return new PNGSaver();
        } else {
            return null;
        }
    }
}

public class User {
    public static void main(String[] args) {
        System.out.print("用戶選擇了GIF格式:");
        ImageSaver saver = TypeChooser.getSaver("GIF");//獲得保存圖片為GIF類型的對(duì)象
        saver.save();
        System.out.print("用戶選擇了JPEG格式:");//獲得保存圖片為JPEG類型的對(duì)象
        saver = TypeChooser.getSaver("JPEG");
        saver.save();
        System.out.print("用戶選擇了PNG格式:");//獲得保存圖片為PNG類型的對(duì)象
        saver = TypeChooser.getSaver("PNG");
        saver.save();
    }
}

效果如圖:

相關(guān)文章

  • idea2020.1最新版永久破解/pycharm也可用(步驟詳解)

    idea2020.1最新版永久破解/pycharm也可用(步驟詳解)

    這篇文章主要介紹了idea2020.1最新版永久破解/pycharm也可用,本文給大家分享簡(jiǎn)單實(shí)現(xiàn)步驟,通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-04-04
  • 基于springEL表達(dá)式詳解及應(yīng)用

    基于springEL表達(dá)式詳解及應(yīng)用

    這篇文章主要介紹了springEL表達(dá)式詳解及應(yīng)用,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • Java中幾種常用數(shù)據(jù)庫(kù)連接池的使用

    Java中幾種常用數(shù)據(jù)庫(kù)連接池的使用

    數(shù)據(jù)庫(kù)連接池在編寫(xiě)應(yīng)用服務(wù)是經(jīng)常需要用到的模塊,太過(guò)頻繁的連接數(shù)據(jù)庫(kù)對(duì)服務(wù)性能來(lái)講是一個(gè)瓶頸,使用緩沖池技術(shù)可以來(lái)消除這個(gè)瓶頸,本文就來(lái)介紹Java常見(jiàn)的幾種,感興趣的可以了解一下
    2021-05-05
  • Java中@DateTimeFormat和@JsonFormat注解介紹

    Java中@DateTimeFormat和@JsonFormat注解介紹

    @DateTimeFormat和@JsonFormat都是處理時(shí)間格式化問(wèn)題的,把其他類型轉(zhuǎn)換成自己需要的時(shí)間類型,下面這篇文章主要給大家介紹了關(guān)于Java中@DateTimeFormat和@JsonFormat注解介紹的相關(guān)資料,需要的朋友可以參考下
    2022-11-11
  • IntelliJ IDEA多屏后窗口不顯示問(wèn)題解決方案

    IntelliJ IDEA多屏后窗口不顯示問(wèn)題解決方案

    這篇文章主要介紹了IntelliJ IDEA多屏后窗口不顯示問(wèn)題解決方案,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-09-09
  • 使用SpringBoot發(fā)送郵箱驗(yàn)證碼的簡(jiǎn)單實(shí)現(xiàn)

    使用SpringBoot發(fā)送郵箱驗(yàn)證碼的簡(jiǎn)單實(shí)現(xiàn)

    這篇文章主要介紹了使用SpringBoot發(fā)送郵箱驗(yàn)證碼的簡(jiǎn)單實(shí)現(xiàn),咱們今天來(lái)講使用QQ郵箱來(lái)發(fā)送和接收驗(yàn)證碼,首先來(lái)介紹一下它在SpringBoot項(xiàng)目中的具體應(yīng)用,需要的朋友可以參考下
    2023-04-04
  • JFinal實(shí)現(xiàn)偽靜態(tài)的方法

    JFinal實(shí)現(xiàn)偽靜態(tài)的方法

    JFinal 是基于 Java 語(yǔ)言的極速 WEB + ORM 框架,其核心設(shè)計(jì)目標(biāo)是開(kāi)發(fā)迅速、代碼量少、學(xué)習(xí)簡(jiǎn)單、功能強(qiáng)大、輕量級(jí)、易擴(kuò)展、Restful。這篇文章主要介紹了JFinal實(shí)現(xiàn)偽靜態(tài),需要的朋友可以參考下
    2018-04-04
  • Java異常處理機(jī)制throws舉例詳解

    Java異常處理機(jī)制throws舉例詳解

    這篇文章主要介紹了Java中異常處理機(jī)制,包括finally的使用、異步處理的方式(throws)、以及手動(dòng)拋出異常,finally用于確保資源釋放,throws用于聲明方法可能拋出的異常,由調(diào)用者處理,手動(dòng)拋出異常則是在特定條件下主動(dòng)拋出異常對(duì)象,需要的朋友可以參考下
    2024-11-11
  • SpringMVC中如何獲取@PathVariable的值

    SpringMVC中如何獲取@PathVariable的值

    這篇文章主要介紹了SpringMVC中如何獲取@PathVariable的值,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-10-10
  • Java swing五子棋的實(shí)現(xiàn)方法

    Java swing五子棋的實(shí)現(xiàn)方法

    這篇文章主要為大家詳細(xì)介紹了Java swing五子棋的實(shí)現(xiàn)方法,Java開(kāi)發(fā)圖形界面程序五子棋的實(shí)現(xiàn)方式,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-06-06

最新評(píng)論

区。| 潞城市| 宁德市| 安岳县| 同心县| 武胜县| 博白县| 郸城县| 如皋市| 甘泉县| 彰武县| 庆云县| 龙陵县| 青田县| 宁乡县| 湘潭县| 肇庆市| 扶风县| 社会| 铜陵市| 沅江市| 赤壁市| 佛山市| 嵩明县| 清镇市| 阿合奇县| 鹤峰县| 南雄市| 土默特左旗| 彰化县| 东港市| 城固县| 云阳县| 万载县| 平安县| 中山市| 稷山县| 封开县| 拉萨市| 江阴市| 确山县|