成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

適配器設(shè)計(jì)模式(應(yīng)用于活動(dòng)業(yè)務(wù))

sunnyxd / 447人閱讀

摘要:適配器的適用場(chǎng)景代碼的復(fù)用性強(qiáng)??蛻舳耸褂媚繕?biāo)接口,與和目標(biāo)接口一致的對(duì)象合作。被適配者一個(gè)現(xiàn)存需要適配的接口。適配器負(fù)責(zé)將的接口轉(zhuǎn)換為的接口。適配器是一個(gè)具體的類,這是該模式的核心。適配器分為類適配器和對(duì)象適配器兩種,下面將詳細(xì)講述。

適配器的適用場(chǎng)景

代碼的復(fù)用性強(qiáng)。

我們一直在使用適配器,如果 只有USB連接頭,無(wú)法將手機(jī)插到標(biāo)準(zhǔn)的插座上面充電 ,這時(shí)需要的一個(gè)適配器,一端接USB連接頭,另一端接插座

活動(dòng)專題,例抽獎(jiǎng),固定的規(guī)則是充值有抽獎(jiǎng)機(jī)會(huì),但是突然來(lái)了一個(gè)需求說(shuō)充值還要分享才能有抽獎(jiǎng)機(jī)會(huì),這時(shí)可以運(yùn)用上這個(gè)設(shè)計(jì)模式

案例一(來(lái)自于php 設(shè)計(jì)模式 書) - 假設(shè)一個(gè)企業(yè)網(wǎng)站同時(shí)銷售軟件服務(wù)和軟件產(chǎn)品,目前所有的交易都在美國(guó)進(jìn)行,后續(xù)業(yè)務(wù)決定向歐洲發(fā)展要增加貨幣換算(增加適配器)

案例二是自已設(shè)計(jì)于活動(dòng)專題業(yè)務(wù)上,只是將邏輯摘取出來(lái),代碼不可直接運(yùn)行

優(yōu)點(diǎn)

靈活性擴(kuò)展性都很好

將目標(biāo)類和適配者類解耦

適配器所涉及的角色包括下面幾種:

目標(biāo)(Target):定義一個(gè)客戶端使用的特定接口。
客戶端(Client):使用目標(biāo)接口,與和目標(biāo)接口一致的對(duì)象合作。
被適配者(Adaptee):一個(gè)現(xiàn)存需要適配的接口。
適配器(Adapter):負(fù)責(zé)將Adaptee的接口轉(zhuǎn)換為Target的接口。適配器是一個(gè)具體的類,這是該模式的核心。
適配器分為類適配器和對(duì)象適配器兩種,下面將詳細(xì)講述。

案例一

來(lái)自 php 設(shè)計(jì)模式 一書的適配器設(shè)計(jì)模式案例**

/**
 * EuroCalc.php
 * 美元 - 能累加購(gòu)買的服務(wù)和產(chǎn)品的價(jià)格 來(lái)自于php 設(shè)計(jì)模式
 */
class DollarCalc {
    private $dollar;
    private $product;
    private $service;
    public $rate = 1;

    public function requestCalc($productNow,$serviceNow) {
        $this->product = $productNow;
        $this->service = $serviceNow;
        $this->dollar = $this->product + $this->service;
        return $this->requestCount();
    }

    private function requestCount() {
        $this->dollar *= $this->rate;
        return $this->dollar;
    }
}


/**
 * EuroCalc.php
 * 歐元 -  能累加購(gòu)買的服務(wù)和產(chǎn)品的價(jià)格
 */
class EuroCalc {
    private $euro;
    private $product;
    private $service;
    public $rate = 1;

    public function requestCalc($productNow,$serviceNow) {
        $this->product = $productNow;
        $this->service = $serviceNow;
        $this->euro = $this->product + $this->service;
        return $this->requestCount();
    }

    private function requestCount() {
        $this->euro *= $this->rate;
        return $this->euro;
    }
}
/**
 * 接口 ITarget.php
 */
interface ITarget {
    function requester();
}
/**
 * 例:找一個(gè)合適的適配器來(lái)適合歐洲的插座一樣,以下就是創(chuàng)建這個(gè)適配器
 * EuroAdapter 實(shí)現(xiàn)了一個(gè)接口又?jǐn)U展了一個(gè)類
 */

class EuroAdapter extends EuroCalc implements ITarget {
    public function __construct() {
        $this->requester();
    }
    public function requester() {
        $this->rate = 0.8111;
        return $this->rate;
    }
}
/**
 * 用戶
 */
class Client {
    private $euroRequest;
    private $dollarRequest;
    public function __construct() {
        $this->euroRequest = new EuroAdapter();
        $this->dollarRequest = new DollarCalc();

        $euros = "€";
        echo "Euros:$euros".$this->makeAdapterRequest($this->euroRequest)."
"; echo "dollar:".$this->makeDollarRequest($this->dollarRequest); } public function makeAdapterRequest(ITarget $req) { return $req->requestCalc(40,50); } public function makeDollarRequest(DollarCalc $req) { return $req->requestCalc(40,50); } } $worker = new Client();
案例二 個(gè)人運(yùn)用于自動(dòng)化活動(dòng)專題的接口設(shè)計(jì)

抽獎(jiǎng)例子(代碼只顯示對(duì)應(yīng)的設(shè)計(jì)邏輯部分)

hd_info = ""; 
    }
    public function _lottery()
    {
        // 實(shí)例
        $lottery = new LotteryAdapter($hd_info);
        // 取得抽獎(jiǎng)結(jié)果
        $rs      = $lottery->_getLotteryResult();
        return $rs;
    }

}

namespace controller;

use btsApp as BaseApp;
/**
 * 
 */
class LotteryAdapter extends AutoLottery implements ILottery
{
    public function __construct($hd_info) {
        // 后臺(tái)配置是否需要使用適配器
        if($hd_info["use_adapter"] === true) {
            $adapter_name = $hd_info["adapter_name"];
            // $adapter_name = "adapter_name"; test
            $this->$adapter_name();
        }
        
    }
    /**
     * adapter_name 該活動(dòng)對(duì)應(yīng)的適配器
     */
    private function adapter_name()
    {
        // 假設(shè)不符合自動(dòng)化的需求條件是必須進(jìn)入游戲后5分才可抽獎(jiǎng),增加適配器的該內(nèi)容即可,從而不用重寫整個(gè)抽獎(jiǎng)活動(dòng)
        $game_info = App::$app->model()->checkEnterGameInfo();
        if(strtotime($info["TIME"]) - time() < 300) {
            $this->adapter_status = false;
            $this->adapter_code   = -51;
        }
    }
}

namespace controller;

use btsApp as BaseApp;
/**
 * 自動(dòng)化抽獎(jiǎng)接口的基類
 */
class AutoLottery {
     // 多帶帶開(kāi)發(fā)條件的狀態(tài)
    public $adapter_status = true;
    public $adapter_code = 0;
    public function _getLotteryResult(){
        
        
        //  最后判斷適配器的狀態(tài)
        if(!$this->adapter_status) {
            App::jetJsonpOutput($this->adapter_return_code);
        }

        // 業(yè)務(wù)邏輯判斷
        
        // 通過(guò)則將數(shù)據(jù)入庫(kù)
        $rs_status = App::$app->model()->insert($rs);
       
        // 返回結(jié)果
        return $rs;
    }
}
?>

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

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/22579.html

相關(guān)文章

  • 2021年9月國(guó)產(chǎn)數(shù)據(jù)庫(kù)大事記

    .markdown-body{word-break:break-word;line-height:1.75;font-weight:400;font-size:15px;overflow-x:hidden;color:#333}.markdown-body h1,.markdown-body h2,.markdown-body h3,.markdown-body h4,.markdown-body...

    suemi 評(píng)論0 收藏0
  • 2021年10月國(guó)產(chǎn)數(shù)據(jù)庫(kù)大事記

    摘要:月日消息,近日,中國(guó)信息通信研究院大數(shù)據(jù)產(chǎn)品能力評(píng)測(cè)數(shù)據(jù)庫(kù)方向的測(cè)評(píng)結(jié)果陸續(xù)出爐。月日消息,國(guó)家工業(yè)信息安全發(fā)展研究中心發(fā)布電信行業(yè)數(shù)據(jù)庫(kù)產(chǎn)品第一期測(cè)評(píng)結(jié)果,前三名分別是阿里云數(shù)據(jù)庫(kù)柏睿數(shù)據(jù)企業(yè)級(jí)交易型數(shù)據(jù)庫(kù)信創(chuàng)版云和恩墨企業(yè)級(jí)數(shù)據(jù)庫(kù)。 .markdown-body{word-break:break-word;line-height:1.75;font-weight:400;font-si...

    elva 評(píng)論0 收藏0
  • 用友助力山東企業(yè)上云

    摘要:用友網(wǎng)絡(luò)山東區(qū)作為推動(dòng)山東企業(yè)上云的主力服務(wù)商,參展了此次活動(dòng)。用友云,是用友時(shí)期的核心產(chǎn)品,致力于以平臺(tái)模式為企業(yè)提供社會(huì)化云服務(wù)助力企業(yè)數(shù)字化轉(zhuǎn)型。用友云幫助企業(yè)實(shí)現(xiàn)敏經(jīng)營(yíng)輕管理易金融簡(jiǎn),從而最終實(shí)現(xiàn)增長(zhǎng)收入降低成本提高效率控制風(fēng)險(xiǎn)。3月7日上午,由濟(jì)南市經(jīng)信委、市財(cái)政局與高新區(qū)機(jī)關(guān)黨委主辦的云行齊魯之濟(jì)南站暨高新區(qū)創(chuàng)新論壇在濟(jì)南禧悅東方酒店順利召開(kāi)。本次活動(dòng)是今年企業(yè)上云第一次重大活動(dòng)...

    shery 評(píng)論0 收藏0
  • 【附PPT下載】UCan技術(shù)開(kāi)放日·上海站活動(dòng)回顧

    摘要:掃描下方二維碼可觀看視頻回放,獲取講師合集活動(dòng)回顧來(lái)自技術(shù)中臺(tái)研發(fā)部的安雪艷介紹了基于打造的技術(shù)平臺(tái)。未來(lái)英特爾將與一起,共同利用并發(fā)揮云原生的價(jià)值,為處在數(shù)字化型中的用戶,提供更加豐富的云化策略。 ...

    番茄西紅柿 評(píng)論0 收藏2637
  • 【附PPT下載】UCan技術(shù)開(kāi)放日·上海站活動(dòng)回顧

    摘要:徐亮厚稱,當(dāng)前云原生已成為業(yè)務(wù)發(fā)展的一個(gè)重要引擎,年疫情更是加大了對(duì)的需求,拉動(dòng)了大數(shù)據(jù)數(shù)據(jù)庫(kù)中間件人工智能的云原生化發(fā)展。未來(lái)英特爾將與一起,共同利用并發(fā)揮云原生的價(jià)值,為處在數(shù)字化型中的用戶,提供更加豐富的云化策略。 9月11日,由UCloud優(yōu)刻得主辦的UCan技術(shù)開(kāi)放日活動(dòng)上,以構(gòu)建云原生,擁抱新增長(zhǎng)為主題,UCloud攜手達(dá)達(dá)集團(tuán)、馭勢(shì)科技、企源科技以及英特爾等企業(yè)的云原生技術(shù)專...

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

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

0條評(píng)論

sunnyxd

|高級(jí)講師

TA的文章

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