国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

PHP設計模式(二):抽象類和接口

xialong / 1533人閱讀

摘要:在設計模式中,抽象類不能夠被實例化初始化,但是可以依靠具體類的繼承來實現。對于大型項目來說,對象都是由基本的抽象類繼承實現,而這些類的方法通常都由接口來定義。

原文地址:PHP設計模式(二):抽象類和接口

Introduction

對于編程來說,對事物的抽象是一個老生常談的話題,抽象問題更利于面向對象編程以及程序設計模式。
和C/C++,Java,Python等語言一樣,PHP也支持面向對象,但是又有略微區別,如PHP支持在接口中定義常量,但是不支持抽象變量。

抽象/Abstraction

對事物的抽象是指,區別兩個不同事物之間的本質特征,這兩個事物應該在某個視角上有明確的區分界限。

如,鯨魚和鯉魚,這兩個事物在動物的視角上,有明確的區分界限,屬于不同的動物;但是在水生動物的視角上,他們屬于同一種動物的抽象。
合理的對問題進行抽象,構造模型,將更容易通過編程來解決問題。
記住:抽象是編程解決問題的基礎,越復雜的問題,越需要一開始就對問題進行抽象,而不是直接寫代碼。

抽象類/Abstract Class

抽象類是一個編程概念,PHP中叫Abstract Classes。在設計模式中,抽象類不能夠被實例化/初始化,但是可以依靠具體類的繼承來實現。
有點抽象,對吧?用代碼來解釋:

定義了動物這個抽象類,動物的屬性是名字name,然后有一個方法是吃食物eat food。
為什么動物是抽象類?因為動物這個物種并不是一個存在于自然界的東西,它是人類腦海里抽象出的東西。存在自然界的是鯨魚和鯉魚這樣的確定性動物。
比如鯨魚的概念,應該是屬于動物,繼承Animal類,我們定義鯨魚這個類以及吃東西的方法:

name = "Whale";
  }
  public function eat($food) {
    echo $this->name . " eat " . $food . ".
";
  }
}
?>

現在我們可以初始鯨魚類,并且調用吃的方法了:

eat("fish");
?>

運行一下:

$ php Whale.php
Whale eat fish.
接口/Interface

PHP也支持面向過程編程概念中的接口,下面同樣用鯨魚的例子來講述:

同樣定義一個鯨魚類,來實現上述接口:

現在我們可以初始鯨魚類,并且調用吃的方法了:

eat("fish");
?>

運行一下:

$ php Whale.php
Whale eat fish.
抽象類vs接口

上面的抽象類和接口的例子,看上去是不是類似?事實上,對于PHP編程來說,抽象類可以實現的功能,接口也可以實現。
抽象類的接口的區別,不在于編程實現,而在于程序設計模式的不同。
一般來講,抽象用于不同的事物,而接口用于事物的行為。
如:水生生物是鯨魚的抽象概念,但是水生生物并不是鯨魚的行為,吃東西才是鯨魚的行為。
對于大型項目來說,對象都是由基本的抽象類繼承實現,而這些類的方法通常都由接口來定義。
此外,對于事物屬性的更改,建議使用接口,而不是直接賦值或者別的方式,如:

observeEat($whale);
    $this->observeEat($carp);
  }
  function observeEat(IAction $animal) {
    $animal->eat();
  }
}
$observer = new observer();
?>

運行一下:

$ php Observer.php
Whale eat fish.
Carp eat moss.
Summary

好的設計模式是嚴格對問題進行抽象,雖然抽象類和接口對于編程實現來說是類似的,但是對于程序設計模式是不同的。

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/21474.html

相關文章

  • 關于抽象類和接口的初步理解

    摘要:關于抽象類和接口的初步理解什么是抽象類抽象類是指在前加了關鍵字且存在抽象方法在類方法關鍵字前加了關鍵字的類。抽象類不能被直接實例化。抽象類中只定義或部分實現子類需要的方法。抽象類提供了具體實現的標準,而接口則是純粹的模板。 關于抽象類和接口的初步理解 什么是抽象類 抽象類是指在 class 前加了 abstract 關鍵字且存在抽象方法(在類方法 function 關鍵字前加了 ab...

    Julylovin 評論0 收藏0
  • PHP設計模式(六):MVC

    摘要:原文地址設計模式六世紀年代,計算機發展迅速,編程技術也日益分化。到了年代,的出現更是讓這種程序設計模式得以延續。根據設計模式三封裝中介紹的設計原則,在面向對象程序設計中,類和類之間的訪問交互和更新應該是通過和。 原文地址:PHP設計模式(六):MVC Introduction 20世紀80年代,計算機發展迅速,編程技術也日益分化。桌面應用編程,也逐漸出現了用戶圖形界面和程序邏輯分離的程...

    時飛 評論0 收藏0
  • PHP面試常考內容之面向對象(3)

    摘要:面試專欄正式起更,每周一三五更新,提供最好最優質的面試內容。繼上一篇面試常考內容之面向對象發表后,今天更新面向對象的最后一篇。面向對象的主要特征為封裝繼承多態。為了提高內聚性減少引起變化,單一原則是低耦合高內聚的面向原則上的引申。 PHP面試專欄正式起更,每周一、三、五更新,提供最好最優質的PHP面試內容。繼上一篇PHP面試常考內容之面向對象(2)發表后,今天更新面向對象的最后一篇(3...

    xfee 評論0 收藏0
  • PHP設計模式(四):繼承

    摘要:原文地址設計模式四繼承在設計模式二抽象類和接口以及設計模式三封裝中,我們已經見過繼承,也就是關鍵字。對于一個好的程序設計,需要類和類之間應該是低耦合的。繼承通常是繼承自抽象類,而不是具體類。 原文地址:PHP設計模式(四):繼承 Introduction 在PHP設計模式(二):抽象類和接口以及PHP設計模式(三):封裝中,我們已經見過繼承,也就是extends關鍵字。和C/C++,J...

    hellowoody 評論0 收藏0
  • PHP經驗總結 - 聊聊面向對象

    摘要:例如汽車這個名詞可以理解為汽車的總類,但這輛寶馬汽車則是一個具體的汽車對象。當在類成員方法內部調用的時候,可以使用偽變量調用當前對象的屬性。在面向對象中則被稱之為方法。 簡述 現在大伙都在講面向對象編程,但是我們也得先找著一個對象是不?不然怎么面向對象?怎么編程? --- 笑話一則,但是理不虧,要搞P面向對象編程,我們起碼要先搞懂對象(還有類)是什么?只有了解它,理解它,你才能駕馭它。...

    lpjustdoit 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<