1. 程式人生 > >設計模式總結之Proxy Pattern(代理模式)

設計模式總結之Proxy Pattern(代理模式)

目錄

建立型設計模式: 結構型設計模式: 行為型設計模式:

Proxy Pattern(代理模式)

意圖

為其他物件提供一種代理以控制對這個物件的訪問。

適用性

在需要用比較通用和複雜的物件指標代替簡單的指標的時候,使用Proxy模式。下面是一些可以使用Proxy模式常見情況:
  1.  遠端代理(Remote Proxy)為一個物件在不同的地址空間提供區域性代表。

  2. 虛代理(Virtual Proxy)根據需要建立開銷很大的物件。

  3. 保護代理(Protection Proxy)控制對原始物件的訪問。保護代理用於物件應該有不同 的訪問許可權的時候。

  4. 智慧指引(Smart Reference)取代了簡單的指標,它在訪問物件時執行一些附加操作。 它的典型用途包括:

* 對指向實際物件的引用計數,這樣當該物件沒有引用時,可以自動釋放它(也稱為SmartPointers)。

* 當第一次引用一個持久物件時,將它裝入記憶體。

* 在訪問一個實際物件前,檢查是否已經鎖定了它,以確保其他物件不能改變它。

結構





例子



優缺點

優點:
(1).職責清晰
真實的角色就是實現實際的業務邏輯,不用關心其他非本職責的事務,通過後期的代理完成一件完成事務,附帶的結果就是程式設計簡潔清晰。
(2).代理物件可以在客戶端和目標物件之間起到中介的作用,這樣起到了中介的作用和保護了目標物件的作用。
(3).高擴充套件性。

相關推薦

設計模式總結Proxy Pattern代理模式

目錄 建立型設計模式: 結構型設計模式: 行為型設計模式: Proxy Pattern(代理模式) 意圖 為其他物件提供一種代理以控制對這個物件的訪問。適用性 在需要用比較通用和複雜的物件指標代替簡單的指標的時候,使用Proxy模式。下面是一些可以使用Proxy模式常

設計模式總結Visitor Pattern訪問者模式

目錄 建立型設計模式: 結構型設計模式: 行為型設計模式: Visitor Pattern(訪問者模式) 意圖 表示一個作用於某物件結構中的各元素的操作。它使你可以在不改變各元素的類的前提下定義作用於這些元素的新操作。適用性 * 一個物件結構包含很多類物件,它們有不同的

設計模式總結Adapter Pattern介面卡模式

目錄 建立型設計模式: 結構型設計模式: 行為型設計模式: Adapter Pattern(介面卡模式) 意圖 將一個類的介面轉換成另外一個客戶希望的介面。Adapter 模式使得原本由於介面不相容而不能一起工作的那些類可以一起工作。 注:介面卡模式在詳細設計階段不需

設計模式總結Facade Pattern外觀模式

目錄 建立型設計模式: 結構型設計模式: 行為型設計模式: Facade Pattern(外觀模式) 意圖 為子系統中的一組介面提供一個一致的介面,Facade模式定義了一個高層介面,這個介面使得這一子系統更加容易使用。適用性 * 當你要為一個複雜子系統提供一個簡單介

設計模式總結Prototype Pattern原型模式

目錄 建立型設計模式: 結構型設計模式: 行為型設計模式: Prototype Pattern(原型模式) 意圖 用原型例項指定建立物件的種類,並且通過拷貝這些原型建立新的物件。適用性 •當要例項化的類是在執行時刻指定時,例如,通過動態裝載; •為了避免建立一個與產

設計模式總結TemplateMethod Pattern模版方法模式

目錄 建立型設計模式: 結構型設計模式: 行為型設計模式: TemplateMethod Pattern(模版方法模式) 意圖 定義一個操作中的演算法的骨架,而將一些步驟延遲到子類中。Template Method使得子類可以不改變一個演算法的結構即可重定義該演算法的

設計模式總結Iterator Pattern迭代器模式

目錄 建立型設計模式: 結構型設計模式: 行為型設計模式: Iterator Pattern(迭代器模式) 意圖 提供一種方法順序訪問一個聚合物件中各個元素, 而又不需暴露該物件的內部表示。適用性 1. 訪問一個聚合物件的內容而無需暴露它的內部表示。 2. 支援對聚合

設計模式總結Builder Pattern建造者模式

目錄 建立型設計模式: 結構型設計模式: 行為型設計模式: Builder Pattern(建造者模式) 意圖 將一個複雜物件的構建與它的表示分離,使得同樣的構建過程可以建立不同的表示。適用性 * 當建立複雜物件的演算法應該獨立於該物件的組成部分以及它們的裝配方式時。

設計模式總結Flyweight Pattern享元模式

目錄 建立型設計模式: 結構型設計模式: 行為型設計模式: Flyweight Pattern(享元模式) 意圖 運用共享技術有效地支援大量細粒度的物件。適用性 當以下所有的條件都滿足時,可以考慮使用享元模式: * 一個應用程式使用了大量的物件。 * 完全由於使用大量

設計模式總結Bridge Pattern橋接模式

目錄 建立型設計模式: 結構型設計模式: 行為型設計模式: Bridge Pattern(橋接模式) 意圖 將抽象部分與它的實現部分分離,使它們都可以獨立地變化。 【GOF95】在提出橋樑模式的時候指出,橋樑模式的用意是"將抽象化(Abstraction)與實現化(I

java設計模式Composite Pattern組合模式

In ima field 編程 這也 composite 當前 屬性 OS 組合模式是面向可維護性編程的一種常見的設計模式。簡單的說就是一個類裏面有一組當前類組成的collection作為這個類的屬性。這和遞歸有一定的相似。他的目的就是在同類型對象之間建立起樹形層次結構,一

Java設計模式十二代理模式

一、什麼是代理模式 Proxy模式又叫做代理模式,是構造型的設計模式之一,它可以為其他物件提供一種代理(Proxy)以控制對這個物件的訪問。 所謂代理,是指具有與代理元(被代理的物件)具有相同的介面的類,客戶端必須通過代理與被代理的目標類互動,而代理一般在互動的過程中(互

【java設計模式 模板方法Template Method模式

1. 模板方法的一個例項         這一節主要來學習一下設計模式中的模板方法模式。我們先來看一個例子:假如現在老闆讓你做一個汽車的模型,要求只要完成基本功能即可,不考慮擴充套件性,那你會怎麼做呢?我們首先會根據經驗設計一個類圖:        由這個類圖可知,非

設計模式模板方法Template Method

模板方法的定義為:再一個操作中定義一個演算法的骨架,將演算法中的一些步驟延遲到子類去實現。模板方法允許子類在不該變演算法結構的情況下重新定義演算法的某些步驟。 Define the skeleton of an algorithm in an operation, defe

1.1-PC1無默認網關/Proxy-ARP代理ARP

證明 驗證 address images fas 51cto success fault sequence 1、實驗拓撲: 2、命令部署:PC1(config)#no ip default-gateway 12.1.1.2拓展:PC1(config)#default int

node總結工具模組Domain 模組

Node.js Domain(域) 簡化非同步程式碼的異常處理,可以捕捉處理try catch無法捕捉的異常,來看下引入 Domain 模組的語法格式: var domain = require("domain") domain模組,把處理多個不同的IO的操作作為一個組。註冊事件和回撥到

node總結工具模組Net 模組

Node.js Net 模組提供了一些用於底層的網路通訊的小工具,包含了建立伺服器/客戶端的方法,來看下引入該模組的語法格式: var net = require("net") 來看下net模組中的方法: 序號 方法 & 描述

node總結工具模組Path 模組

Node.js path 模組提供了一些用於處理檔案路徑的小工具,來看下引入該模組的語法格式: var path = require("path") 來看下方法: 序號 方法 & 描述 1 path.nor

node總結工具模組OS 模組

Node.js os 模組提供了一些基本的系統操作函式,來看下引入該模組的語法格式: var os = require("os") 來看下其中包含的方法: 序號 方法 & 描述 1 os.tmpdir()

node總結工具模組DNS 模組

Node.js DNS 模組用於解析域名,來看下引入 DNS 模組的語法格式: var dns = require("dns") 來看下dns模組中包含的方法: 序號 方法 & 描述 1 dns.looku