登錄檔模式

2021-06-27 14:25:38 字數 2662 閱讀 2774

通常應用程式可以分為如下幾個層次:

1.前端檢視

2.命令控制

3.業務邏輯

4.資料處理

前端檢視負責顯示對使用者資料和收集使用者輸入資料,提交給命令控制層次。命令控制層收到資料進行一系列加工,委託業務邏輯層完成具體的任務。業務邏輯層呼叫資料處理模組完成使用者資料的儲存。

但是前端提交的資料如何在幾個層次直接恰當的傳遞呢?一種是通過前面命令模式提供的乙個上下文(context)類來傳遞,把引數放置在context物件裡面,從命令控制層傳遞到業務邏輯層,完成一系列操作後,通過context返回操作結果。第二種方式是修改命令物件的介面,來適配對應的資料傳遞。這兩種方式有時候會破壞封裝。我們知道單例模式提供了另外一種訪問全域性變數的方式。靜態變數區域性隱藏並通過介面可以輕鬆的設定獲取物件屬性。註冊模式(registry)正是利用了這種便利。

這裡也可以把註冊模式看成單例版本的context物件。

乙個簡單的registry實現:

[php]view plain

copy

abstract

class

registry  

php支援三種型別的物件資料生命週期:一種是從接收到一次http請求開始,請求處理完畢結束。另外一種是支援會話(session)級別的物件,即可以把物件資料儲存在session中,php在

session_start的時候根據cookies裡面儲存的會話id恢復不同的物件資料,可以達到同一使用者多次請求訪問同一物件資料的目的。還有一種是應用程式作用域級別的。即同一應用程式的

不同使用者可以共享同一物件資料,這個操作需要php內建的序列化函式來完成。

基於一次http請求的資料註冊模式:

[php]view plain

copy

class

requestregistry 

extends

registry  

static

public

function

instance()  

return

self::

$instance

;  }  

protected

function

get(

$key

)  return

null;  

}  protected

function

set(

$key

, $value

)  static

function

set_request(request 

$request

)  static

function

get_request()  

}  

會話請求的登錄檔:

[php]view plain

copy

class

sessionregistry 

extends

registry  

static

function

instance()  

return

self::

$instance

;  }  

protected

function

get(

$key

)  return

null;  

}  protected

function

set(

$key

, $value

)  public

function

set_complex(complex 

$complex

)  public

function

get_complex()  

}  

支援應用程式級別的登錄檔:

[php]view plain

copy

class

extends

registry  

static

function

instance()  

return

self::

$instance

;  }  

protected

function

set(

$key

, $value

)  protected

function

get(

$key

)  if

($mtime

$this

->mtimes[

$key

])  

if(isset(

$this

->values[

$key

]))  

}  return

null;  

}  static

function

get_dsn()  

static

function

set_dsn(

$dsn

)  }  

the end.

登錄檔模式

登錄檔的作用是提供系統級別的物件訪問功能,雖然全域性變數不怎麼好,但全域性性的資料范文仍然吸引力.許多企業級的系統都分為幾個層次,每個層次通過定義好的介面進行交流。層的分離使應用程式變得靈活,但是,當你需要在乙個層中獲得另乙個不相鄰層中的資訊時就會遇到困難。可以使用登錄檔模式來解決問題。privat...

windows登錄檔 登錄檔的認識

登錄檔的特點 1.登錄檔允許對硬體 系統引數 應用程式和裝置驅動程式進行跟蹤配置,這使得修改某些設定後不用重新啟動成為可能。2.登錄檔中登入的硬體部分資料可以支援高版本的即插即用特性。當windows檢測到機器上的新裝置時,就把有關資料儲存到登錄檔中,另外,還可以避免新裝置與原有裝置之間的資源衝突。...

監視登錄檔,,列舉登錄檔項

建立登錄檔項 lret regopenkeyex hkey current user,t software hrjd ascpatch 0,key all access,hkey if lret error success waifainfo info lret regsetvalueex hkey...