策略模式淺析



public interface BaseStrategy {int totalPrice = 0;/*** 測試策略模式*/void test();}
public class StrategyA implements BaseStrategy {/*** 測試A*/public void test() {System.out.println("策略A");}}
public class StrategyB implements BaseStrategy{/*** 測試B*/public void test() {System.out.println("策略B");}}
public class StrategyC implements BaseStrategy{/*** 測試C*/public void test() {System.out.println("策略C");}}
/*** 總領(lǐng)全局*/public class StrategyContent {/*** 引子*/private BaseStrategy baseStrategy;/*** 巧用構(gòu)造函數(shù),關(guān)聯(lián)具體策略*/public StrategyContent(int type){switch (type){case 1:baseStrategy=new StrategyA();break;case 2:baseStrategy=new StrategyB();break;case 3:baseStrategy=new StrategyC();break;default:break;}}/*** 總領(lǐng)調(diào)度*/public void testStrategy(){baseStrategy.test();}}
public class OriginStrategy {/*** 基礎(chǔ)策略模式*/BaseStrategy baseStrategy;/*** 初始化* @param baseStrategy*/OriginStrategy(BaseStrategy baseStrategy){this.baseStrategy=baseStrategy;}/*** 策略調(diào)用*/public void test(){this.baseStrategy.test();}}
public class TestStrategyContentMain {/*** 業(yè)務(wù)調(diào)用方* @param args*/public static void main(String[] args) {OriginStrategy originStrategy;switch (1){case 1:originStrategy=new OriginStrategy(new StrategyA());break;case 2:originStrategy=new OriginStrategy(new StrategyB());break;case 3:originStrategy=new OriginStrategy(new StrategyC());break;default:throw new IllegalStateException("Unexpected value: " + 1);}originStrategy.test();}}
評論
圖片
表情
