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)接口。
代碼如下:
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也可用,本文給大家分享簡(jiǎn)單實(shí)現(xiàn)步驟,通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-04-04
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注解介紹
@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)題解決方案,文中通過(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),咱們今天來(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 是基于 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

