工廠模式、單例模式、註冊樹模式
三種基本設計模式
1、工廠模式:工廠方法或者類生成物件,而不是在程式碼中直接new
2、單例模式:使某個類的物件僅允許建立一個
3、註冊模式:全域性共享和交換物件
工廠模式:
<?php
namespace IMooc;
class Factory
{
static function createDatabase()
{
$db = new Database();
return $db;
}
}
$db = IMooc\Factory::createDatabase();
工廠模式的好處是,避免Database
Database
這個類發生了一些變更(修改了名字或者引數),那這時候如果不工廠模就需要修改多出了,使用工廠模式,就只需要修改工廠方法即可。
單例模式:
<?php
namespace IMooc;
class Database
{
protected $db;
private function __construct()
{
}
// 獲取資料庫操作例項
static function getInstance()
{
if(self::$db){
return self::$db;
}else{
self::$db = new self();
return self::$db;
}
}
}
// 無論呼叫多少次,只會建立一個例項
$db = IMooc\Database::getInstance();
$db = IMooc\Database::getInstance();
$db = IMooc\Database::getInstance();
$db = IMooc\Database::getInstance();
註冊樹模式:
<?php
namespace IMooc;
class Register
{
protected static $objects;
static function set($alias, $object)
{
self::$objects[$alias] = $object;
}
static function get($name)
{
return self::$objects[$name];
}
static function _unset($alias)
{
unset(self::$objects[$alias]);
}
}
$db = \IMooc\Register::get('db1');
相關推薦
PHP模式設計之單例模式、工廠模式、註冊樹模式、適配器模式、觀察者模式
操作符 unset 關系 玩具 ati ase color 只有一個 bsp php模式設計之單例模式 什麽是單例模式? 單例模式是指在整個應用中只有一個實例對象的設計模式 為什麽要用單例模式? php經常要鏈接數據庫,如果在一個項目中頻繁建立連接數據庫,會
ThinkPHP筆記5——PHP常用設計模式(單例、工廠、註冊樹)
<?php //單例模式 class Site{ //屬性 public $siteName; //本類的靜態例項 private static $instance = null; //禁用構造方法 private function __construct($siteN
工廠模式、單例模式、註冊樹模式
三種基本設計模式 1、工廠模式:工廠方法或者類生成物件,而不是在程式碼中直接new 2、單例模式:使某個類的物件僅允許建立一個 3、註冊模式:全域性共享和交換物件 工廠模式: <?php namespace IMooc; class Fac
PHP經典設計模式,單例模式、工廠模式、註冊樹模式
學習THINKPHP5.1看視訊時的練習 <?php /** * 單例模式 * 工廠模式 * 註冊樹模式 */ // 單例模式,該類負責建立自己的物件,同時確保只有單個物件被建立。這個類提供了一種訪問其唯一的物件的方式 class Site { //
編程經常使用設計模式具體解釋--(上篇)(工廠、單例、建造者、原型)
-a 裝飾器模式 nds support art 類的繼承 兩個 開放 lose 參考來自:http://zz563143188.iteye.com/blog/1847029 一、設計模式的分類 整體來說設計模式分為三大類: 創建型模式。共五種:工廠方法模式、抽
java中的設計模式之單例模式、工廠模式
Java中的設計模式 轉載地址:https://www.toutiao.com/i6573486403282272775/ 為什麼要學習設計模式 1)設計模式都是一些相對優秀的解決方案,很多問題都是典型的
javaSE (三十八)設計模式 ( 單例設計模式(餓漢式/懶漢式)、簡單工廠模式、工廠模式、介面卡模式、模板方法設計模式)
1、單例設計模式(餓漢式/懶漢式): 概念:保證類在記憶體中只有一個物件 思路: 私有構造方法,其他類不能再訪問該構造方法了 建立本類物件(就在本類裡建立),將物件的應用作為成員變數,並私有靜態化(在這裡又分為餓漢式和懶漢式,餓漢式直接引用連線物件,而懶漢式在第二步先建
【設計模式】單例模式、三個工廠模式
interface IFactory { Operation CreateOperation(); } class AddFactory : IFactory { public Operation CreateOperation()
Java中常見的設計模式---簡單工廠模式、工廠方法模式和單例模式
在講設計模式之前,我們首先來說一下面向物件思想的設計原則,在實際的開發中,我們要想更深入的瞭解面向物件思想,就必須熟悉前人總結過的面向物件的思想的設計原則:1.單一職責原則:“高內聚,低耦合”,也就是說,每個類應該只有一個職責,對外只能提供一種功能,而引起類變化的原因應該只有
關於設計模式(單例模式、工廠模式、代理模式、介面卡模式、觀察者設計模式)的理解
1):單例模式 package designMode.singleton; /** * 單例模式形成的原因: * * 構造器私有---> 外界無法例項化,就在類內部建立一個例項物件,用static修飾,可以用類名直接呼叫---> 但是,類的一般用法都講究
java設計模式-每天三個設計模式之工廠、單例、建造者
前情提要 在上篇文章中介紹了面向物件程式設計的七個基本原則,分別是單一職責,裡式替換、依賴注入、介面分離、迪米特原則、開閉原則、優先使用組合而不是繼承原則。 本文重點 工廠模式單例模式建造者模式 工廠模式,工廠模式又分為簡單工廠、工廠
簡單工廠模式、單例模式以及MVC模式
本文是對簡單工廠模式、單例模式、以及MVC模式的簡單介紹。 至於你問,為什麼把這三種模式放在一起講,筆者目前也很懵逼,因為這是一個作業... 好了,言歸正傳。 一、簡單工廠模式(Simple Fact
設計模式(單例、代理、工廠)
一、單例模式 <span style="font-family:Microsoft YaHei;font-size:12px;">主要包括懶漢式,餓漢式,登記式,以及懶漢式的改進型,還有一個關於讀取propertoes配置檔案的例項。</span&g
五、單例設計模式
println pre log 內存 urn args 懶漢 logs pan /* 設計模式:解決某一類問題最有效的方式 單例設計模式:解決的是一個類在內存中只有一個對象的問題 1:構造方法私有化 2:構造方法私有化之後,一個對象都不能創建了,所以只能在類中創建對
設計模式之單例模式【內附物件例項化幾種方式、實現執行緒安全幾種方式】
繼續來複習常用的設計模式-單例模式,順便回憶一下執行緒安全的幾種實現方式。 一、什麼是單例模式 單例模式,簡單常用的一種設計模式,也很好的體現了程式碼控制物件在記憶體數量的一種方式,主要分2種實現方式: ①餓漢式,執行緒安全 ②懶漢式,執行緒不安全(新增鎖機制,可以實現執行緒安全)
8:self、parent、單例模式
self和parent的用法 self:本類,自身 parent:父類 使用場景: 首先請明確區分類和物件; 在使用本類/父類的,靜態屬性、方法時,會用到; self 在本類中使用,用於引用自身的靜態屬性和方法; parent 在子類中使用,用於引用父類
python小總結3(異常、單例設計模式)
一、異常 AttributeError:試圖訪問一個物件沒有的成員【屬性和方法】 ValueError:值錯誤,傳入了一個不期望的值 ImportError:無法匯入模組或者包:基本上路徑問題 IndexError:訪問了不在範圍內的索引 KeyError:試圖訪問字典中不存在的鍵 NameErr
七、單例模式
1、定義:單例模式(Singleton),保證一個類僅有一個例項,並提供一個訪問它的全域性訪問點。 2、什麼時候用呢? 資源共享的情況下 應用程式 的日誌應用,一般都用單例模式實現,這一般是由於共享的日誌檔案一直處於開啟狀態,因為只能有
19、設計模式之單例模式-懶漢式
/** * 懶漢式-單例模式 * 多執行緒模式慎用,單例模式會失效,為解決這一問題,可以在靜態方法上加“synchronized”表明鎖住該類本身,同一時間點只有一個執行緒可以訪問該方法 * 該方法雖然可以解決單例失效的問題,但卻非常的消耗資源 */ public c
20、設計模式之單例模式-餓漢式
import java.io.Serializable; /** * 餓漢式-單例模式 * 實現Serializable介面,使其支援序列化與反序列化 */ public class HungrySingleton implements Serializable {