PHP最常用的2種設(shè)計(jì)模式工廠模式和單例模式介紹
更新時(shí)間:2012年08月14日 08:58:42 作者:
當(dāng)你在不斷的試圖從你的應(yīng)用程序中發(fā)現(xiàn)新的特征時(shí),你是否發(fā)現(xiàn)你提出的解決方法和一些以前你已經(jīng)實(shí)現(xiàn)的東西是如此的類似呢
1.工廠模式
主要作用是降低耦合度。
abstract class Operation{
abstract public function getValue($num1,$num2);
public function getAttr(){
return 1;
}
}
class Add extends Operation{
public function getValue($num1, $num2){
return $num1+$num2;
}
}
class Sub extends Operation{
public function getValue($num1, $num2){
return $num1-$num2;
}
}
class Factory{
public static function CreateObj($operation){
switch ($operation){
case '+': return new Add();
case '-': return new Sub();
}
}
}
$Op=Factory::CreateObj('-');
echo $Op->getValue(3, 6);
用在真正開發(fā)中一般當(dāng)做數(shù)據(jù)庫選擇類。
2單例模式
單例是因?yàn)橐粋€(gè)就足夠了,多了浪費(fèi)。比如郵局里的電話簿只有一本,有需要的人拿來看,沒有必要每個(gè)人要查的時(shí)候工作人員就拿一本出來,看完了再回收。
class Mysql{
public static $conn;
public static function getInstance(){
if (!self::$conn){
new self();
return self::$conn;
}else {
return self::$conn;
}
}
private function __construct(){
self::$conn= "mysql_connect:";// mysql_connect('','','')
}
public function __clone()
{
trigger_error("Only one connection");
}
}
echo Mysql::getInstance();
echo Mysql::getInstance();
實(shí)際中用作數(shù)據(jù)庫連接類和工廠模式一起使用,根據(jù)參數(shù)調(diào)用單例模式,可以提高資源使用效率。
主要作用是降低耦合度。
復(fù)制代碼 代碼如下:
abstract class Operation{
abstract public function getValue($num1,$num2);
public function getAttr(){
return 1;
}
}
class Add extends Operation{
public function getValue($num1, $num2){
return $num1+$num2;
}
}
class Sub extends Operation{
public function getValue($num1, $num2){
return $num1-$num2;
}
}
class Factory{
public static function CreateObj($operation){
switch ($operation){
case '+': return new Add();
case '-': return new Sub();
}
}
}
$Op=Factory::CreateObj('-');
echo $Op->getValue(3, 6);
用在真正開發(fā)中一般當(dāng)做數(shù)據(jù)庫選擇類。
2單例模式
單例是因?yàn)橐粋€(gè)就足夠了,多了浪費(fèi)。比如郵局里的電話簿只有一本,有需要的人拿來看,沒有必要每個(gè)人要查的時(shí)候工作人員就拿一本出來,看完了再回收。
復(fù)制代碼 代碼如下:
class Mysql{
public static $conn;
public static function getInstance(){
if (!self::$conn){
new self();
return self::$conn;
}else {
return self::$conn;
}
}
private function __construct(){
self::$conn= "mysql_connect:";// mysql_connect('','','')
}
public function __clone()
{
trigger_error("Only one connection");
}
}
echo Mysql::getInstance();
echo Mysql::getInstance();
實(shí)際中用作數(shù)據(jù)庫連接類和工廠模式一起使用,根據(jù)參數(shù)調(diào)用單例模式,可以提高資源使用效率。
您可能感興趣的文章:
- php設(shè)計(jì)模式 Template (模板模式)
- PHP常用的三種設(shè)計(jì)模式匯總
- php設(shè)計(jì)模式 DAO(數(shù)據(jù)訪問對(duì)象模式)
- php設(shè)計(jì)模式 Interpreter(解釋器模式)
- PHP經(jīng)典面試題之設(shè)計(jì)模式(經(jīng)常遇到)
- php設(shè)計(jì)模式小結(jié)
- php設(shè)計(jì)模式之單例模式使用示例
- php 設(shè)計(jì)模式之 工廠模式
- php基礎(chǔ)設(shè)計(jì)模式大全(注冊(cè)樹模式、工廠模式、單列模式)
- PHP設(shè)計(jì)模式概論【概念、分類、原則等】
相關(guān)文章
php 無法加載mysql的module的時(shí)候的配置的解決方案引發(fā)的思考
今天配置php 的時(shí)候,發(fā)現(xiàn)沒配起mysql ,wordpress提示我需要 mysql 的module之后上google搜索,大多數(shù)都是說php.ini 沒加載起2012-01-01
PHP FOR MYSQL 代碼生成助手(根據(jù)Mysql里的字段自動(dòng)生成類文件的)
根據(jù) Mysql里的字段自動(dòng)生成類文件的實(shí)現(xiàn)代碼,學(xué)習(xí)php的朋友可以參考下。2011-07-07
使用ThinkPHP框架(thinkphp8.0)創(chuàng)建定時(shí)任的操作步驟
這篇文章給大家介紹了使用ThinkPHP框架(thinkphp8.0)創(chuàng)建定時(shí)任的操作步驟,文中通過代碼示例給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下2024-01-01
一些需要禁用的PHP危險(xiǎn)函數(shù)(disable_functions)
有時(shí)候?yàn)榱税踩覀冃枰粢恍㏄HP危險(xiǎn)函數(shù),整理如下需要的朋友可以參考下2012-02-02
PHP fastcgi模式上傳大文件(大約有300多K)報(bào)錯(cuò)
上傳圖片時(shí),大約有300多K,結(jié)果報(bào)了個(gè)服務(wù)器錯(cuò)誤,fastcgi默認(rèn)的請(qǐng)求大小為131072,于是在apache配置中添加了MaxRequestLen 配置就好了2014-09-09
(PHP實(shí)現(xiàn))只使用++運(yùn)算實(shí)現(xiàn)加法,減法,乘法,除法
本篇文章是對(duì)(PHP實(shí)現(xiàn))只使用++運(yùn)算實(shí)現(xiàn)加法,減法,乘法,除法的方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-06-06

