1. 程式人生 > >工廠模式、單例模式、註冊樹模式

工廠模式、單例模式、註冊樹模式

三種基本設計模式
1、工廠模式:工廠方法或者類生成物件,而不是在程式碼中直接new
2、單例模式:使某個類的物件僅允許建立一個
3、註冊模式:全域性共享和交換物件

工廠模式:

<?php
namespace IMooc;

class Factory
{
    static function createDatabase()
    {
        $db = new Database();
        return $db;
    }
}
$db = IMooc\Factory::createDatabase();

工廠模式的好處是,避免Database

這個類,在很多個php檔案都進行new操作,如果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:selfparent模式

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 {