成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

策略模式學(xué)習(xí)

boredream / 1827人閱讀

摘要:策略模式在構(gòu)造方法或方法中初始化各自需要的策略模式代碼策略接口具體策略具體策略上下文抽象類我理解的這個(gè)類的作用是負(fù)責(zé)策略與用戶使用者的連接,也是策略模式的入口持有一個(gè)具體策略的對(duì)象構(gòu)造函數(shù),傳入一個(gè)具體策略對(duì)象策略方法具體環(huán)境類應(yīng)用場(chǎng)景多個(gè)

策略模式UML:

ContextType1、ContextType2在構(gòu)造方法或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
    }
}

/**
 * 上下文抽象類
 * 我理解的這個(gè)類的作用是:負(fù)責(zé)策略與用戶(使用者)的連接,也是策略模式的入口
 */
public AbstractClass Context {
    //持有一個(gè)具體策略的對(duì)象
    private Strategy strategy;
    /**
     * 構(gòu)造函數(shù),傳入一個(gè)具體策略對(duì)象
     * @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
    }
}

應(yīng)用場(chǎng)景: 多個(gè)用戶購(gòu)買不同型號(hào)電腦

public class Client {
    public static void main(String[] args) {
        // 客戶需要定制自己需要的策略
        // 策略1--購(gòu)買戴爾電腦
        Strategy dell = new StrategyTypeA();
        dell.setCPU("AMD");
        dell.setScreen("LGD");
        
        // 策略2
        Strategy macbook = new StrategyTypeB();
        macbook.setCPU("Intel");
        macbook.setScreen("sansung");

        // 購(gòu)買的是dell電腦
        // 用戶將自己需要的策略(電腦配置)交給商家
        ContextType1 customer1 = new ContextType1(dell);
        // buyComputer方法中的strategy.strategyInterfaceMethod(); = StrategyTypeA.strategyInterfaceMethod();
        customer1.buyComputer();

        // 購(gòu)買的是macbook
        ContextType2 customer2 = new ContextType2(macbook);  
        // buyComputer方法中的strategy.strategyInterfaceMethod(); = StrategyTypeB.strategyInterfaceMethod();      
        customer2.buyComputer();
    }
}

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/71609.html

相關(guān)文章

  • 策略模式學(xué)習(xí)

    摘要:可以避免使用多重條件轉(zhuǎn)移語(yǔ)句缺點(diǎn)客戶端必須知道所有的策略類,并自行決定使用哪一個(gè)策略類。不希望客戶端知道復(fù)雜的與算法相關(guān)的數(shù)據(jù)結(jié)構(gòu),在具體策略類中封裝算法和相關(guān)的數(shù)據(jù)結(jié)構(gòu),提高算法的保密性與安全性。在中的應(yīng)用中的四種拒絕策略 定義 策略模式是對(duì)象行為模式的一種定義三要素: 一組不同的算法(策略),各有優(yōu)劣 實(shí)現(xiàn)了同一接口,之間可以互相替換 在不同的業(yè)務(wù)場(chǎng)景下,調(diào)用方依據(jù)業(yè)務(wù)決定調(diào)用哪...

    adam1q84 評(píng)論0 收藏0
  • 慕課網(wǎng)_《模式的秘密之策略模式學(xué)習(xí)總結(jié)

    時(shí)間:2017年08月31日星期四說明:本文部分內(nèi)容均來自慕課網(wǎng)。@慕課網(wǎng):http://www.imooc.com教學(xué)源碼:https://github.com/zccodere/s...學(xué)習(xí)源碼:https://github.com/zccodere/s... 第一章:策略模式簡(jiǎn)介 1-1 簡(jiǎn)介 課程大綱 什么是策略模式 策略模式如何實(shí)現(xiàn) 策略模式總結(jié)篇 實(shí)例案例分享 日常生活中的策略 Wor...

    zhongmeizhi 評(píng)論0 收藏0
  • JavaScript設(shè)計(jì)模式學(xué)習(xí)策略模式

    摘要:什么是策略模式策略模式,就是將不同的算法各自封裝起來,然后根據(jù)程序的不同情況,采用不同的算法,有點(diǎn)像工廠模式。在其他語(yǔ)言中,實(shí)現(xiàn)這樣的思路也比較費(fèi)勁,而得函數(shù)非常靈活,本來可以當(dāng)值傳遞,所以實(shí)現(xiàn)策略模式非常輕松,也很靈活。 什么是策略模式 策略模式,就是將不同的算法各自封裝起來,然后根據(jù)程序的不同情況,采用不同的算法,有點(diǎn)像工廠模式。比如在很多種情況下,都要寫ifXXX dosomet...

    snifes 評(píng)論0 收藏0
  • Python學(xué)習(xí)之路25-使用一等函數(shù)實(shí)現(xiàn)設(shè)計(jì)模式

    摘要:本篇主要講述中使用函數(shù)來實(shí)現(xiàn)策略模式和命令模式,最后總結(jié)出這種做法背后的思想。 《流暢的Python》筆記。本篇主要講述Python中使用函數(shù)來實(shí)現(xiàn)策略模式和命令模式,最后總結(jié)出這種做法背后的思想。 1. 重構(gòu)策略模式 策略模式如果用面向?qū)ο蟮乃枷雭砗?jiǎn)單解釋的話,其實(shí)就是多態(tài)。父類指向子類,根據(jù)子類對(duì)同一方法的不同重寫,得到不同結(jié)果。 1.1 經(jīng)典的策略模式 下圖是經(jīng)典的策略模式的U...

    econi 評(píng)論0 收藏0
  • PHP設(shè)計(jì)模式系列之入門

    摘要:設(shè)計(jì)模式系列之入門設(shè)計(jì)模式是一套被反復(fù)使用多數(shù)人知曉的經(jīng)過分類編目的代碼設(shè)計(jì)經(jīng)驗(yàn)的總結(jié)。毫無疑問,設(shè)計(jì)模式于己于他人于系統(tǒng)都是多贏的設(shè)計(jì)模式使代碼編制真正工程化設(shè)計(jì)模式是軟件工程的基石脈絡(luò),如同大廈的結(jié)構(gòu)一樣。 PHP設(shè)計(jì)模式系列之入門 設(shè)計(jì)模式(Design pattern)是一套被反復(fù)使用、多數(shù)人知曉的、經(jīng)過分類編目的、代碼設(shè)計(jì)經(jīng)驗(yàn)的總結(jié)。使用設(shè)計(jì)模式是為了可重用代碼、讓代碼更容易...

    animabear 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

boredream

|高級(jí)講師

TA的文章

閱讀更多
最新活動(dòng)
閱讀需要支付1元查看
<