亚洲最大看欧美片,亚洲图揄拍自拍另类图片,欧美精品v国产精品v呦,日本在线精品视频免费

  • 站長(zhǎng)資訊網(wǎng)
    最全最豐富的資訊網(wǎng)站

    聊聊PHP面向?qū)ο笤O(shè)計(jì)的五個(gè)基準(zhǔn)原則(S.O.L.I.D)

    本篇文章帶大家了解一下PHP面向?qū)ο笤O(shè)計(jì)的五個(gè)基準(zhǔn)原則(S.O.L.I.D),希望對(duì)大家有所幫助!

    聊聊PHP面向?qū)ο笤O(shè)計(jì)的五個(gè)基準(zhǔn)原則(S.O.L.I.D)

    前端(vue)入門(mén)到精通課程:進(jìn)入學(xué)習(xí)

    S.O.L.I.D面向?qū)ο笤O(shè)計(jì)(OOD)的 5 個(gè)準(zhǔn)則的首字母縮寫(xiě) ,這些準(zhǔn)則是由 Robert C. Martin 提出的, 他更為人所熟知的名字是 Uncle Bob。

    這些準(zhǔn)則使得開(kāi)發(fā)出易擴(kuò)展、可維護(hù)的軟件變得更容易。也使得代碼更精簡(jiǎn)、易于重構(gòu)。同樣也是敏捷開(kāi)發(fā)和自適應(yīng)軟件開(kāi)發(fā)的一部分。

    備注: 這不是一篇簡(jiǎn)單的介紹 “歡迎來(lái)到 _*S.O.L.I.D*” 的文章,這篇文章想要闡明 *S.O.L.I.D*** 是什么。

    S.O.L.I.D 意思是:

    擴(kuò)展出來(lái)的首字母縮略詞看起來(lái)可能很復(fù)雜,實(shí)際上它們很容易理解。

    • S – 單一功能原則
    • O – 開(kāi)閉原則
    • L – 里氏替換原則
    • I – 接口隔離原則
    • D – 依賴反轉(zhuǎn)原則

    接下來(lái)讓我們看看每個(gè)原則,來(lái)了解為什么 S.O.L.I.D 可以幫助我們成為更好的開(kāi)發(fā)人員。

    單一職責(zé)原則

    縮寫(xiě)是 S.R.P ,該原則內(nèi)容是:

    一個(gè)類有且只能有一個(gè)因素使其改變,意思是一個(gè)類只應(yīng)該有單一職責(zé).

    例如,假設(shè)我們有一些圖形,并且想要計(jì)算這些圖形的總面積.是的,這很簡(jiǎn)單對(duì)不對(duì)?

    class Circle {     public $radius;      public function __construct($radius) {         $this->radius = $radius;     } }  class Square {     public $length;      public function __construct($length) {         $this->length = $length;     } }

    首先,我們創(chuàng)建圖形類,該類的構(gòu)造方法初始化必要的參數(shù).接下來(lái),創(chuàng)建AreaCalculator 類,然后編寫(xiě)計(jì)算指定圖形總面積的邏輯代碼.

    class AreaCalculator {      protected $shapes;      public function __construct($shapes = array()) {         $this->shapes = $shapes;     }      public function sum() {         // logic to sum the areas     }      public function output() {         return 'Sum of the areas of provided shapes: ' . $this->sum();     } }

    AreaCalculator 使用方法,我們只需簡(jiǎn)單的實(shí)例化這個(gè)類,并且傳遞一個(gè)圖形數(shù)組,在頁(yè)面底部展示輸出內(nèi)容.

    $shapes = array(     new Circle(2),     new Square(5),     new Square(6) );  $areas = new AreaCalculator($shapes);  echo $areas->output();

    輸出方法的問(wèn)題在于,AreaCalculator 處理了數(shù)據(jù)輸出邏輯.因此,假如用戶希望將數(shù)據(jù)以 json 或者其他格式輸出呢?

    所有邏輯都由 AreaCalculator 類處理,這恰恰違反了單一職責(zé)原則(SRP); AreaCalculator 類應(yīng)該只負(fù)責(zé)計(jì)算圖形的總面積,它不應(yīng)該關(guān)心用戶是想要json還是HTML格式數(shù)據(jù)。

    因此,要解決這個(gè)問(wèn)題,可以創(chuàng)建一個(gè) SumCalculatorOutputter 類,并使用它來(lái)處理所需的顯示邏輯,以處理所有圖形的總面積該如何顯示。

    SumCalculatorOutputter 類的工作方式如下:

    $shapes = array(     new Circle(2),     new Square(5),     new Square(6) );  $areas = new AreaCalculator($shapes); $output = new SumCalculatorOutputter($areas);  echo $output->JSON(); echo $output->HAML(); echo $output->HTML(); echo $output->JADE();

    現(xiàn)在,無(wú)論你想向用戶輸出什么格式數(shù)據(jù),都由 SumCalculatorOutputter 類處理。

    開(kāi)閉原則

    對(duì)象和實(shí)體應(yīng)該對(duì)擴(kuò)展開(kāi)放,但是對(duì)修改關(guān)閉.

    簡(jiǎn)單的說(shuō)就是,一個(gè)類應(yīng)該不用修改其自身就能很容易擴(kuò)展其功能.讓我們看一下 AreaCalculator 類,特別是 sum 方法.

    public function sum() {     foreach($this->shapes as $shape) {         if(is_a($shape, 'Square')) {             $area[] = pow($shape->length, 2);         } else if(is_a($shape, 'Circle')) {             $area[] = pi() * pow($shape->radius, 2);         }     }      return array_sum($area); }

    如果我們想用 sum 方法能計(jì)算

    贊(0)
    分享到: 更多 (0)
    網(wǎng)站地圖   滬ICP備18035694號(hào)-2    滬公網(wǎng)安備31011702889846號(hào)