PHP有關的設計模式

2021-08-08 19:18:45 字數 2221 閱讀 6965

單例模式又稱為職責模式,它用來在程式中建立乙個物件,就是例項化出來的物件是唯一的。

基本格式(三私一公-兩靜態):

擁有乙個private建構函式

擁有乙個private的儲存靜態例項物件

擁有乙個private的轉殖方法

擁有乙個建立這個例項的public的靜態方法,單例類不能再其它類中直接例項化,只能被其自身例項化。

附上自己手敲的例項

<?php

/** *@author: huang

*@date: 2017-09-27 13:45:08

*@last modified by: huang

*@last modified time: 2017-09-27 13:54:22

*/class

student

private

function

__clone

()

public

static

function

getinstance

()

return

self::$instance;

}}$single = student::getinstance();

var_dump($single);

$single2 = student::getinstance();

var_dump($single2);

// $single3 = clone $single;

補充:

這裡的構造方法宣告為私有是為了禁止在類外通過new關鍵字例項化該類。由於getinstance是靜態的方法,那麼裡面不能訪問非靜態的屬性,又不想讓外部訪問該靜態屬性,因此宣告為靜態私有最合適不過。。

工廠模式,工廠方法或者類生成物件,而不是在**中直接new

<?php

/** *@author: huang

*@date: 2017-09-27 14:07:20

*@last modified by: huang

*@last modified time: 2017-09-27 17:21:21

*/abstract

class

optclass

addextends

opt}

class

decextends

opt}

class

multi

extends

opt}

class

chuextends

opt }

}class

factory

}$obj1 = factory::make('add');

$obj1->getvalue(2,1);

$obj1 = factory::make('dec');

$obj1->getvalue(2,1);

$obj1 = factory::make('multi');

$obj1->getvalue(2,1);

$obj1 = factory::make('chu');

$obj1->getvalue(2,1);

原理:通過工廠類,乙個類只能生產乙個物件. 將新物件存入陣列,判斷陣列中是否有該類物件,如果有,則不會再重新建立.所以乙個類只能他建立乙個物件.

<?php

/** *@author: huang

*@date: 2017-09-27 20:44:24

*@last modified by: huang

*@last modified time: 2017-09-27 20:53:07

*/class

sigle_factory

return

self::$arr[$classname];

}}class

a{}class

b{}$obj1 = sigle_factory::make('a');

$obj2 = sigle_factory::make('a');

$obj3 = sigle_factory::make('b');

$obj4 = sigle_factory::make('b');

var_dump($obj1,$obj2,$obj3,$obj4);

OO學習 有關設計模式

原則 物件導向程式設計,培養物件導向思想。ddd,設計模式是物件導向的左右手。物件是人類的正常思維方式,它是表示具體東西或抽象的事物,它有單一的職責和統一的行為。比如想到乙個長方形的周長或面積,不能應當就想到對應的周長或面積,而是應當先想到長方形對應的是乙個物件,它有對應的屬性,長和寬,然後有對應的...

PHP的設計模式

常用的 php的設計模式 1.單例模式 顧名思義,就是只有乙個例項。作為物件的建立模式,單例模式確 保某乙個類只有乙個例項,而且自行例項化並向整個系統提供這個例項。單例模式的要點有三個 一是某個類只能有乙個例項 二是它必須自行建立這個例項 三是它必須自行向整個系統提供這個例項。為什麼要使用php單例...

php設計 PHP常用設計模式

1 單例模式指在整個應用中只有乙個物件例項的設計模式 class single public rand static private instance 類直接呼叫 final private function construct private防止外部new this rand mt rand 1,...