PHP設計模式之簡單投訴頁面執行個體,php設計模式執行個體_PHP教程

來源:互聯網
上載者:User

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...

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.