本文目錄一覽:
php中有哪些設計模式,舉例說明應用場景
PHP 一般有五種常見的設計模式
工廠模式
它具有創建對象的某些方法。可以使用工廠類創建對象,而不直接使用 new。
例如:
?php
interface IUser
{
function getName();
}
class User implements IUser
{
public function __construct( $id ) { }
public function getName()
{
return “Jack”;
}
}
class UserFactory
{
public static function Create( $id )
{
return new User( $id );
}
}
$uo = UserFactory::Create( 1 );
echo( $uo-getName().”\n” );
?
另外四種是:觀察者模式,單元素模式,命令鏈模式,策略模式。例子可以百度一搜。
PHP有幾種設計模式
5種啊工廠模式,單元素模式,觀察者模式,命令鏈模式,策略模式,希望能幫到你,我還要在後盾網上課學習呢,有不會的可以問我。(´ω`*)
怎麼理解php中的設計模式
1、單例模式:PHP中的對象生存期間是從該腳本開始一直到該腳本結束為止,因此PHP的單例模式只是在一個頁面中(這裡可能包含很多其他頁面,不是狹義的單頁面)多次用到該對象時才會起作用,多次用到時不去重複的new對象(多個人做一個項目時,難免會碰到一次請求中多次實例一個對象的情況),將不會耗費不必要的資源(數據控連接操做效果很明顯),還有一點就是可以保證整個腳本中都是同一個對象,這種模式是怎麼實現的呢,他的實現有幾個要注意的點:
a. 首先就是要將__construct()方法定義為私有方法,這樣就不能通過new來得到一個新的實例了,單例模式不能在外部進行實例化,這能字自身內部進行實例化;
你熟悉的設計模式有哪些?寫出單例模式的實現代碼
23個設計模式:
根據目的設計模式可以分為創造模式,結構模式和行為模式,創建模式用於處理對象的創建。結構模式用於處理類或對象的組合。
行為模式用於描述類或對象如何交互以及如何分配職責,創建模式用於處理對象的創建。主要包括以下五種設計模式:
工廠方法模式()
抽象工廠模式(AbstractFactoryPattern)
建造者模式(BuilderPattern)
原型模式(PrototypePattern)
單例模式(SingletonPattern)
結構模式用於處理類或對象的組合,包括以下七個設計模式:
適配器模式(AdapterPattern)
橋接模式(BridgePattern)
組合模式(CompositePattern)
裝飾者模式(DecoratorPattern)
外觀模式(FacadePattern)
享元模式(FlyweightPattern)
代理模式(ProxyPattern)
行為模式描述類或對象如何交互以及它們如何分配職責。它由以下11種設計模式組成:
責任鏈模式(Chain的ResponsibilityPattern)
命令模式(CommandPattern)
解釋器模式(InterpreterPattern)
迭代器模式(IteratorPattern)
中介者模式(MediatorPattern)
備忘錄模式(MementoPattern)
觀察者模式(ObserverPattern)
狀態模式(StatePattern)
策略模式(StrategyPattern)
模板方法模式(TemplateMethodPattern)
訪問者模式(VisitorPattern)
單例模式實現1:
公共類Singleton{
類共享實例對象
私有靜態單例;單例=零;
//私有構造函數
私有Singleton(){
系統。出去了。這是單例!!);
}
//獲取單例方法
公共同步靜態單例getInstance(){
//確定共享對象是否為空,如何空一個新對象
If(singleton==null){
singleton=newsingleton();
}
返回單例。
}
}
單例模式實現2:
公共類Singleton{
類共享實例對象實例化
PrivatestaticSingletonSingleton=newSingleton();
//私有構造函數
私有Singleton(){
系統:出去了,這是單例!!);
}
//獲取單例方法
公共靜態單例getInstance(){
直接返回共享對象
返回單例。
}
}
擴展資料:
注意事項:
設計模式主要分三個類型:創建型和行為型。
Singleton:確保一個類只有一個實例,並為其提供一個全局訪問點
AbstractFactory:提供一個介面,用於創建一系列相關或相互依賴的對象,而無需指定它們的具體類。
FactoryMethod:定義一個用於創建對象的介面,並讓子類決定實例化哪個類。工廠方法將類的實例化延遲到子類。
Builder:將複雜對象的構造與其表示分離,使相同的構造過程可以創建不同的表示。
Prototype:指定要使用Prototype實例創建的對象的類型,並複製該原型來創建一個新對象。
Composite:將對象組合成樹狀結構,以表示整體各部分之間的關係。組合使用戶一致地使用單個對象和組合對象。
Facade:為子系統fa中的一組介面提供一致的介面。Ade提供了一個高級介面,使子系統更易於使用。
Proxy:為其他對象提供一個代理,以控制對該對象的訪問
Adapter:將一個介面類轉換為客戶想要的另一個介面類。適配器模式使那些由於介面不兼容而無法一起工作的類一起工作。
Decrator:式比子類化更靈活,可以為對象動態添加一些額外的職責。
Bridge:模式將抽象部分與其實現部分分離,以便它們可以獨立地更改。
Flyweight:享元模式
php中常見的幾種設計模式
狀態state模式是GOF23種模式中的一種,和命令模式一樣,也是一種行為模式。狀態模式和命令模式相當像,一樣是「介面—實現類」這種模式的應用,是面向介面編程原則的體現。
狀態模式屬於對象創建型模式,其意圖是允許一個對象在其內部狀態改變時改變它的行為,對象看起來似乎修改了他的類。比較常見的例子是在一個表示網路連接的類TCPConnection,一個TCPConnection對象的狀態處於若干不同的狀態之一:連接已經建立(Established),正在監聽,連接已經關閉(closed)。當一個TCPConnection對象收到其他對象的請求時,他根據自身的狀態作出不同的反應。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/246301.html