java設(shè)計(jì)模式策略模式 java設(shè)計(jì)模式的作用
FNAC文化購(gòu)賣家服務(wù)2025-08-277190
策略模式是一種行為設(shè)計(jì)模式,它允許在運(yùn)行時(shí)選擇算法的行為。策略模式定義了一系列的算法,并將每個(gè)算法封裝起來(lái),使它們可以互換。策略模式讓算法獨(dú)立于使用它的客戶而變化,這樣可以實(shí)現(xiàn)算法的可替換性。
在Java中,實(shí)現(xiàn)策略模式可以使用enum
和Map
來(lái)實(shí)現(xiàn)。以下是一個(gè)簡(jiǎn)單的策略模式示例:
// 枚舉類,表示所有可能的策略
public enum Strategy {
STRATEGY1,
STRATEGY2,
STRATEGY3
}
// 策略接口
public interface StrategyInterface {
void execute();
}
// 具體策略類
public class ConcreteStrategy1 implements StrategyInterface {
@Override
public void execute() {
System.out.println("執(zhí)行策略1");
}
}
public class ConcreteStrategy2 implements StrategyInterface {
@Override
public void execute() {
System.out.println("執(zhí)行策略2");
}
}
public class ConcreteStrategy3 implements StrategyInterface {
@Override
public void execute() {
System.out.println("執(zhí)行策略3");
}
}
// 上下文類,用于存儲(chǔ)策略并調(diào)用
public class Context {
private Strategy strategy;
public Context(Strategy strategy) {
this.strategy = strategy;
}
public void execute() {
strategy.execute();
}
}
public class Main {
public static void main(String[] args) {
StrategyInterface strategy1 = new ConcreteStrategy1();
StrategyInterface strategy2 = new ConcreteStrategy2();
StrategyInterface strategy3 = new ConcreteStrategy3();
Context context1 = new Context(strategy1);
Context context2 = new Context(strategy2);
Context context3 = new Context(strategy3);
context1.execute(); // 輸出:執(zhí)行策略1
context2.execute(); // 輸出:執(zhí)行策略2
context3.execute(); // 輸出:執(zhí)行策略3
}
}
在這個(gè)示例中,我們定義了一個(gè)Strategy
枚舉類,表示所有可能的策略。然后實(shí)現(xiàn)了一個(gè)StrategyInterface
接口,定義了一個(gè)execute()
方法。接下來(lái),我們創(chuàng)建了三個(gè)具體的策略類(ConcreteStrategy1
、ConcreteStrategy2
和ConcreteStrategy3
),分別實(shí)現(xiàn)了StrategyInterface
接口。最后,我們創(chuàng)建了一個(gè)Context
類,用于存儲(chǔ)策略并調(diào)用。
本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點(diǎn)和立場(chǎng)。
轉(zhuǎn)載請(qǐng)注明,如有侵權(quán),聯(lián)系刪除。