php設計模式--策略模式

來源:互聯網
上載者:User

<?php/*** 策略模式需求:想實現這樣一個功能:開展一個網站邀請活動,然後參與者將推廣的網站地址連結發給好友,好友點選連結後在網站註冊成功,的邀請日誌記錄條數加1這樣我們實現了主體Activity)、策略AbstractActivityStrategy -> DEFAULTActivityStrategy)、行為ActivityLog、ActivityLogAmount)的分離。1:如果產品人員現在決定不要計數這個功能,那我們只需修改 策略 模組。2:如果決定邀請到一個人數字加2 ,我們則只需修改 相應的行為類。3:在如果這個產品人員實在變態,把邀請的整個邏輯都改了,那我們只需要增加相應的策略類,然後增加行為如果存在就不必增加),主體始終是不需要修改的。*//*** 活動主體類*/class Activity  {private $strategy; //用於儲存策略執行個體public  $strategyName = 'DEFAULTActivityStrategy';public function __construct($strategyName) {if(!empty($strategyName)){$this->strategyName = $strategyName;}$this->strategy = AbstractActivityStrategy::getInstance($this->strategyName); //載入策略類}public function addLog() {$data = array('id'=>'uid','event'=>'eventName');  // 添加到資料庫的資料$this->strategy->addLog($data);}}/*** 策略工廠策略類*/abstract class AbstractActivityStrategy{abstract public function addLog($data);public static function getInstance($strategyName){return new $strategyName;}}/*** 策略具體類*/class DEFAULTActivityStrategy extends AbstractActivityStrategy {public function addLog($data) {$activityLog = new ActivityLog();$activityLog->save($data);$activityLogAmount = new ActivityLogAmount(); //計數類$activityLogAmount->countValue += 1;$activityLogAmount->save();}}/*** 活動紀錄具體類*/class ActivityLog  {public function save($data){echo "save log .<br>";}}/*** 活動計數具體類*/class ActivityLogAmount {public $countValue; //邀請記錄數public function __construct(){$this->countValue = 0;}public function save(){echo " log inc 1";}}$activity = new Activity(null);$activity->addLog();

 

本文出自 “phper” 部落格,請務必保留此出處http://janephp.blog.51cto.com/4439680/1286700

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.