PHP設計模式之簡單投訴頁面執行個體,php設計模式執行個體
本文執行個體介紹了PHP簡單投訴頁面的實現代碼,分享給大家供大家參考,具體內容如下
php代碼:
<?php/* * 設計模式練習 * 1.資料庫連接類(單例模式) * 2.調用介面實現留言本功能(原廠模式) * 3.實現分級舉報處理功能(責任鏈模式) * 4.發送不同組合的舉報資訊(橋接模式) * 5.發送不同格式的舉報資訊(適配器模式) * 6.在投訴內容後自動追加時間(裝飾器模式) * 7.根據會員登入資訊變換顯示風格(觀察者模式) * 8.根據發帖長度加經驗值(策略模式) */interface DB { function conn();}/** * 單例模式 */class MysqlSingle implements DB { protected static $_instance = NULL; public static function getInstance() { if (!self::$_instance instanceof self) { self::$_instance = new self; } return self::$_instance; } final protected function __construct() { echo 'Mysql單例建立成功
'; } final protected function __clone() { return false; } public function conn() { echo 'Mysql串連成功
'; }}/** * 原廠模式 */interface Factory { function createDB();}class MysqlFactory implements Factory { public function createDB() { echo 'Mysql工廠建立成功
'; return MysqlSingle::getInstance(); }}/** * 根據使用者名稱顯示不同風格 * 觀察者模式 */class Observer implements SplSubject { protected $_observers = NULL; public $_style = NULL; public function __construct($style) { $this->_style = $style; $this->_observers = new SplObjectStorage(); } public function show() { $this->notify(); } public function attach(SplObserver $observer) { $this->_observers->attach($observer); } public function detach(SplObserver $observer) { $this->_observers->detach($observer); } public function notify() { $this->_observers->rewind(); while ($this->_observers->valid()) { $observer = $this->_observers->current(); $observer->update($this); $this->_observers->next(); } }}class StyleA implements SplObserver { public function update(SplSubject $subject) { echo $subject->_style . ' 模組A
'; }}class StyleB implements SplObserver { public function update(SplSubject $subject) { echo $subject->_style . ' 模組B
'; }}/** * 根據不同方式進行投訴 * 橋接模式 */class Bridge { protected $_obj = NULL; public function __construct($obj) { $this->_obj = $obj; } public function msg($type) { } public function show() { $this->msg(); $this->_obj->msg(); }}class BridgeEmail extends Bridge { public function msg() { echo 'Email>>'; }}class BridgeSms extends Bridge { public function msg() { echo 'Sms>>'; }}class Normal { public function msg() { echo 'Normal
'; }}class Danger { public function msg() { echo 'Danger
'; }}/** * 適配器模式 */class Serialize { public $content = NULL; public function __construct($content) { $this->content = serialize($content); } public function show() { return '序列化格式:
' . $this->content; }}class JsonAdapter extends Serialize { public function __construct($content) { parent::__construct($content); $tmp = unserialize($this->content); $this->content = json_encode($tmp, TRUE); } public function show() { return 'Json格式:
' . $this->content; }}/** * 在投訴內容後自動追加 * 裝飾器模式 */class Base { protected $_content = NULL; public function __construct($content) { $this->_content = $content; } public function getContent() { return $this->_content; }}class Decorator { private $_base = NULL; public function __construct(Base $base) { $this->_base = $base; } public function show() { return $this->_base->getContent() . '>>系統時間:' . date('Y-m-d H:i:s', time()); }}/** * 分級舉報處理功能 * 責任鏈模式 */class level1 { protected $_level = 1; protected $_top = 'Level2'; public function deal($level) { if ($level <= $this->_level) { echo '處理層級:1
'; return; } $top = new $this->_top; $top->deal($level); }}class level2 { protected $_level = 2; protected $_top = 'Level3'; public function deal($level) { if ($level <= $this->_level) { echo '處理層級:2
'; return; } $top = new $this->_top; $top->deal($level); }}class level3 { protected $_level = 3; protected $_top = 'Level2'; public function deal($level) { echo '處理層級:3
'; return; }}if (!empty($_POST)) { echo 'PHP設計模式
'; //串連資料庫——工廠+單例模式 $mysqlFactory = new MysqlFactory(); $single = $mysqlFactory->createDB(); $single->conn(); echo '
'; //觀察者模式 $username = $_POST['username']; $ob = new Observer($username); $a = new StyleA(); $ob->attach($a); $b = new StyleB(); $ob->attach($b); $ob->show(); echo '
'; $ob->detach($b); $ob->show(); echo '
'; //橋接模式 $typeM = $_POST['typeM']; $typeN = 'Bridge' . $_POST['typeN']; $obj = new $typeN(new $typeM); $obj->show(); echo '
'; //適配器模式 $post = $_POST; $obj = new Serialize($post); echo $obj->show(); echo '
'; $json = new JsonAdapter($post); echo $json->show(); echo '
'; echo '
'; //裝飾器模式 $content = $_POST['content']; $decorator = new Decorator(new Base($content)); echo $decorator->show(); echo '
'; //責任鏈模式 echo '
'; $level = $_POST['level']; $deal = new Level1(); $deal->deal(intval($level)); return;}require("0.html");
html代碼:
PHP設計模式
以上就是本文的全部內容,希望對大家的學習有所協助。
您可能感興趣的文章:
- php設計模式之簡單原廠模式詳解
- PHP中“簡單原廠模式”執行個體代碼講解
- PHP設計模式之觀察者模式執行個體
- php設計模式之委託模式
- PHP常用設計模式之委託設計模式
- PHP 設計模式系列之 specification規格模式
- 學習php設計模式 php實現備忘錄模式(Memento)
- 學習php設計模式 php實現觀察者模式(Observer)
- 學習php設計模式 php實現模板方法模式
- 執行個體講解PHP設計模式編程中的簡單原廠模式
http://www.bkjia.com/PHPjc/1104342.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/1104342.htmlTechArticlePHP設計模式之簡單投訴頁面執行個體,php設計模式執行個體 本文執行個體介紹了PHP簡單投訴頁面的實現代碼,分享給大家供大家參考,具體內容如下 p...