亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 語言 > PHP > 正文

PHP面向對象五大原則之開放-封閉原則(OCP)詳解

2024-05-05 00:03:06
字體:
來源:轉載
供稿:網友

本文實例講述了PHP面向對象五大原則之開放-封閉原則(OCP)。分享給大家供大家參考,具體如下:

1. 什么是“開放-封閉”

隨著軟件系統規模的不斷增大,軟件系統的維護和修改的復雜性不斷提高,這種困境促使法國工程院士Bertrand Meyer在1998年提出了“開放-封閉”(Open-Close Principle,OCP)原則,這條原則的基本思想是:

Open(Open for extendtion)模塊的行為必須是開放的、支持擴展的,而不是僵化的。

Close(Closed for modification)在對模塊的功能進行擴展時,不應該影響或大規模地影響已有的模塊。

換句話說,也就是要求開發人員在不修改系統中現有代碼(源代碼或者二進制代碼)的前提下,實現對應用系統的軟件功能的擴展。用一句話概括就是:一個模塊在擴展性方面應該是開發的而在更改性方面應該是封閉的。

從生活中,最容易想到的的例子就是電腦,我們可以輕松地對電腦進行功能的擴展,而只需通過接口連入不同的設備。

開放-封閉能夠提高系統的可擴展性和可維護性,但這也是相對的,對于一臺電腦不可能完全開放,有些設備和功能必須保持穩定才能減少維護上的困難。要實現一項新的功能,你就必須升級硬件,或者換一臺更高性能的電腦。以電腦中的多媒體播放軟件為例,作為一款播放器,應該具有一些基本的、通用的功能,如打開多媒體文件,停止播放、快進、音量調節等功能。但不論是什么播放器,不論是什么播放平臺下,遵循這個原則設計的播放器都應具有統一風格和操作習慣,無論換用哪一款,都應保證作者能快速上手。

以播放器為例,先定義一個抽象的接口,代碼如下所示。

interface process{  public function process();}

然后,對此接口進行擴展,實現解碼和輸出功能,如下所示

class playerencode implements process{  public function process()  {    echo "encode",PHP_EOL;  }}class playeroutput implements process{  public function process()  {    echo "ouput",PHP_EOL;  }}

對于播放器的各種功能,這里是開放的,只要你遵照約定,實現了process接口,就能給播放器添加新的功能模塊。這里只實現解碼和輸出模塊,還可以依據需求,加入更多新的模塊。

接下來定義播放器的線程高調度管理器,播放器一旦接收到通知(可以是外部單擊行為,也可以是內部的notify行為),將回調實際的線程處理,代碼如下

class playProcess{  private $message = null;  public function __construct() {}  public function callback(event $event)  {    $this->message = $event->click();    if($this->message instanceof process)    {      $this->message->process();    }  }}

具體的產品出來了,在這里定義一個MP4類,這個類是相對封閉的,其中定義事件的處理邏輯,代碼如下

class mp4{  public function work()  {    $playProcess = new playProcess();    $playProcess->callback(new event('encode'));    $playProcess->callback(new event('output'));  }}

最后為事件分揀的處理類,此類負責對事件進行分揀,判斷用戶或內部行為,以產生正確的“線程”,供播放器內置的純種管理器調度,代碼如下

class event{  private $m;  public function __construct($me)  {    $this->m = $me;  }  public function click()  {    switch($this->m)    {      case 'encode';        return new playerencode();        break;      case 'output':        return new playeroutput();        break;    }  }}

最后運行下而的代碼

$mp4 = new mp4;$mp4->work();

運行結果如下:

encode ouput

2. 如何遵守開放-封閉原則

實現開放-封閉的核心就是對抽象編程,而不對具體編程,因為抽象相對穩定。讓類依賴于固定的抽象,這樣的修改就是封閉的;而通過面向對象的繼承和對多態機制,可以實現對抽象體的繼承,通過覆寫其方法來改變固有行為,實現新的擴展方法,所以對于擴展就是開放的。

1)在設計方面應用“抽象”和“封裝”的思想。

一方面也就是要在軟件系統中找出各種可能的“可變因素”,并將之封裝起來。

另一方面,一種可變的因素不應當散落在多個不同代碼模塊中,而應當被封裝到一個對象中。

2)在系統功能編程實現方面應用面向接口的編程。

當需求發生變化時,可以提供該接口新的實現類,以求適應變化。

面向接口編程要求功能類實現接口,對象聲明為接口類型。在設計模式中,裝飾模式比較明顯地用到了OCP。

希望本文所述對大家PHP程序設計有所幫助。


注:相關教程知識閱讀請移步到PHP教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品视频色| 欧美性69xxxx肥| 亚洲免费精彩视频| 日韩精品一区二区视频| 亚洲国产日韩欧美在线图片| 成人国产精品免费视频| 亚洲精品视频久久| 中文字幕v亚洲ⅴv天堂| 国产大片精品免费永久看nba| 欧美日韩一区二区在线| 91视频国产一区| 成人精品aaaa网站| 另类少妇人与禽zozz0性伦| 亚洲精品720p| 怡红院精品视频| 久久精品国产久精国产一老狼| 中文字幕日本欧美| 国产精品日韩欧美综合| 成人a免费视频| 欧美午夜精品在线| 欧美肥臀大乳一区二区免费视频| 91在线中文字幕| 性欧美长视频免费观看不卡| 欧美亚洲成人网| 日本高清视频一区| 性视频1819p久久| 日韩高清不卡av| 亚洲女人被黑人巨大进入| 日韩一级裸体免费视频| 国产亚洲欧美日韩一区二区| 国产日韩中文字幕| 亚洲人在线视频| 视频在线观看99| 欧美精品videossex88| 日韩成人在线播放| 亚洲欧美成人精品| 91精品国产综合久久香蕉最新版| 久久91亚洲精品中文字幕| 日韩精品中文字幕在线播放| 北条麻妃99精品青青久久| 亚洲图中文字幕| 久久免费视频观看| 国产精品欧美亚洲777777| 国产日韩欧美在线视频观看| 亚洲影院色在线观看免费| 夜夜嗨av色一区二区不卡| 国产精品一香蕉国产线看观看| 91高清视频在线免费观看| 亚洲欧洲在线观看| 中文字幕少妇一区二区三区| 国产精品国语对白| 一区二区亚洲欧洲国产日韩| 日韩精品一区二区三区第95| 久久久av免费| 久热精品视频在线免费观看| 成人激情视频免费在线| 欧美日韩一区二区免费在线观看| 2020欧美日韩在线视频| 国产视频精品自拍| 欧美丝袜一区二区三区| 国模精品一区二区三区色天香| 国产精品久久久久久影视| 疯狂欧美牲乱大交777| 久久人人看视频| 正在播放欧美视频| 成人黄色影片在线| 国产精品美女视频网站| 91在线|亚洲| 亚洲一区二区三区四区在线播放| 欧美成人精品在线| 久久久久亚洲精品国产| 国产精品一区二区三区久久| 精品动漫一区二区三区| 久久久久久久91| 欧美精品在线看| 国产不卡一区二区在线播放| 亚洲色图25p| 欧美日韩在线另类| 国产精品日韩久久久久| 亚洲毛片在线看| 欧美黄色免费网站| 国产国语videosex另类| 久久中文精品视频| 久久综合久久美利坚合众国| 欧美极品欧美精品欧美视频| 国产午夜精品久久久| 中文字幕亚洲一区二区三区五十路| 韩国三级电影久久久久久| 第一福利永久视频精品| 在线日韩欧美视频| 伊人男人综合视频网| 国产日韩在线一区| 久久精品免费电影| 亚洲午夜未删减在线观看| 2019日本中文字幕| 日韩电影免费在线观看中文字幕| 国自产精品手机在线观看视频| 精品久久久久久国产| 性欧美xxxx| 久久亚洲欧美日韩精品专区| 日韩成人av在线播放| 久久久www成人免费精品张筱雨| 久久91超碰青草是什么| 在线成人激情黄色| 国产精品久久久久久av| 2019中文字幕免费视频| 亚洲自拍高清视频网站| 久久久精品久久| 欧美激情在线播放| 亚洲激情国产精品| 欧美日韩福利视频| 97av在线播放| 精品国产精品三级精品av网址| 69久久夜色精品国产7777| 久久久久久久久久国产| 日韩精品中文字幕在线观看| 亚洲视屏在线播放| 国产玖玖精品视频| 精品女厕一区二区三区| 一本色道久久88精品综合| 91精品国产综合久久久久久蜜臀| 欧美日韩国产二区| 国产偷国产偷亚洲清高网站| 亚洲一区美女视频在线观看免费| 欧洲成人免费aa| 国产精品综合网站| 毛片精品免费在线观看| 亚洲精品美女视频| 国产剧情日韩欧美| 91亚洲永久免费精品| 国产脚交av在线一区二区| 欧美精品午夜视频| 欧美性一区二区三区| 91精品久久久久久久久| 精品久久久久久中文字幕一区奶水| 日韩精品欧美国产精品忘忧草| 久久成年人视频| 国产亚洲精品久久久| 国产精品美女久久久免费| 欧美激情第99页| 国产精品91视频| 日本成熟性欧美| 欧美激情手机在线视频| 欧美激情在线狂野欧美精品| 国产精品视频男人的天堂| 成人免费激情视频| 国产精品高清在线| 国产精品专区h在线观看| 精品国产一区二区三区久久久狼| 日韩av免费在线看| 久久久久中文字幕2018| 92国产精品久久久久首页| 亚洲精品永久免费| 高跟丝袜一区二区三区| 海角国产乱辈乱精品视频| 九九久久久久99精品| 国产精品成人一区二区| 欧美一区二区影院| 超碰97人人做人人爱少妇| 亚洲18私人小影院| 青青久久av北条麻妃海外网| 亚洲视频日韩精品| 日本一区二区不卡| 久久久免费av|