摘要:策略模式在構造方法或方法中初始化各自需要的策略模式代碼策略接口具體策略具體策略上下文抽象類我理解的這個類的作用是負責策略與用戶使用者的連接,也是策略模式的入口持有一個具體策略的對象構造函數(shù),傳入一個具體策略對象策略方法具體環(huán)境類應用場景多個
策略模式UML:
ContextType1、ContextType2在構造方法或set方法中初始化各自需要的StrategyType
策略模式代碼
/** * 策略接口 */ public interface Strategy { public void strategyInterfaceMethod(); } /** * 具體策略A */ public class StrategyTypeA implements Strategy { @Override public void strategyInterfaceMethod() { // todo someting } } /** * 具體策略B */ public class StrategyTypeB implements Strategy { @Override public void strategyInterfaceMethod() { // todo someting } } /** * 上下文抽象類 * 我理解的這個類的作用是:負責策略與用戶(使用者)的連接,也是策略模式的入口 */ public AbstractClass Context { //持有一個具體策略的對象 private Strategy strategy; /** * 構造函數(shù),傳入一個具體策略對象 * @param strategy */ public Context(Strategy strategy){ this.strategy = strategy; } /** * 策略方法 */ public void contextMethod(){ strategy.strategyInterfaceMethod(); } } /** * 具體環(huán)境類 */ public Class ContextType1 extends Context{ public void contextMethod(){ strategy.strategyInterfaceMethod(); // todo something } }
應用場景: 多個用戶購買不同型號電腦
public class Client { public static void main(String[] args) { // 客戶需要定制自己需要的策略 // 策略1--購買戴爾電腦 Strategy dell = new StrategyTypeA(); dell.setCPU("AMD"); dell.setScreen("LGD"); // 策略2 Strategy macbook = new StrategyTypeB(); macbook.setCPU("Intel"); macbook.setScreen("sansung"); // 購買的是dell電腦 // 用戶將自己需要的策略(電腦配置)交給商家 ContextType1 customer1 = new ContextType1(dell); // buyComputer方法中的strategy.strategyInterfaceMethod(); = StrategyTypeA.strategyInterfaceMethod(); customer1.buyComputer(); // 購買的是macbook ContextType2 customer2 = new ContextType2(macbook); // buyComputer方法中的strategy.strategyInterfaceMethod(); = StrategyTypeB.strategyInterfaceMethod(); customer2.buyComputer(); } }
文章版權歸作者所有,未經(jīng)允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉載請注明本文地址:http://systransis.cn/yun/71609.html
時間:2017年08月31日星期四說明:本文部分內容均來自慕課網(wǎng)。@慕課網(wǎng):http://www.imooc.com教學源碼:https://github.com/zccodere/s...學習源碼:https://github.com/zccodere/s... 第一章:策略模式簡介 1-1 簡介 課程大綱 什么是策略模式 策略模式如何實現(xiàn) 策略模式總結篇 實例案例分享 日常生活中的策略 Wor...
摘要:什么是策略模式策略模式,就是將不同的算法各自封裝起來,然后根據(jù)程序的不同情況,采用不同的算法,有點像工廠模式。在其他語言中,實現(xiàn)這樣的思路也比較費勁,而得函數(shù)非常靈活,本來可以當值傳遞,所以實現(xiàn)策略模式非常輕松,也很靈活。 什么是策略模式 策略模式,就是將不同的算法各自封裝起來,然后根據(jù)程序的不同情況,采用不同的算法,有點像工廠模式。比如在很多種情況下,都要寫ifXXX dosomet...
摘要:本篇主要講述中使用函數(shù)來實現(xiàn)策略模式和命令模式,最后總結出這種做法背后的思想。 《流暢的Python》筆記。本篇主要講述Python中使用函數(shù)來實現(xiàn)策略模式和命令模式,最后總結出這種做法背后的思想。 1. 重構策略模式 策略模式如果用面向對象的思想來簡單解釋的話,其實就是多態(tài)。父類指向子類,根據(jù)子類對同一方法的不同重寫,得到不同結果。 1.1 經(jīng)典的策略模式 下圖是經(jīng)典的策略模式的U...
摘要:設計模式系列之入門設計模式是一套被反復使用多數(shù)人知曉的經(jīng)過分類編目的代碼設計經(jīng)驗的總結。毫無疑問,設計模式于己于他人于系統(tǒng)都是多贏的設計模式使代碼編制真正工程化設計模式是軟件工程的基石脈絡,如同大廈的結構一樣。 PHP設計模式系列之入門 設計模式(Design pattern)是一套被反復使用、多數(shù)人知曉的、經(jīng)過分類編目的、代碼設計經(jīng)驗的總結。使用設計模式是為了可重用代碼、讓代碼更容易...
閱讀 2557·2023-04-26 00:57
閱讀 926·2021-11-25 09:43
閱讀 2234·2021-11-11 16:55
閱讀 2254·2019-08-30 15:53
閱讀 3608·2019-08-30 15:52
閱讀 1478·2019-08-30 14:10
閱讀 3394·2019-08-30 13:22
閱讀 1223·2019-08-29 11:18