鍍金池/ 教程/ Python/ 代理設計模式
反模式
隊列
適配器設計模式
享元設計模式
Python設計模式
工廠模式
模板設計模式
構建器(Builder)設計模式
Python設計模式概要
命令設計模式
Python設計模式簡介
觀察者設計模式
代理設計模式
異常處理
責任鏈設計模式
字典實現(xiàn)
抽象工廠設計模式
Python并發(fā)(多線程)
策略設計模式
門面(Facade)設計模式
原型設計模式
迭代器設計模式
集合
單例模式
列表數(shù)據(jù)結構
狀態(tài)設計模式
模型視圖控制器(MVC)模式
裝飾器設計模式
面向對象概念的實現(xiàn)
面向對象設計模式
字符串和序列化

代理設計模式

代理設計模式包含一個新對象,稱為“代理”,代替被稱為“真實主體”的現(xiàn)有對象。 由真實主體創(chuàng)建的代理對象必須位于相同的接口上,以便不讓客戶端知道使用代理來代替真實對象。 客戶端向代理生成的請求將通過真實主體傳遞。

代理模式的UML表示如下 -

如何實現(xiàn)代理模式?

現(xiàn)在讓我們來看看如何實現(xiàn)代理模式。參考以下實現(xiàn)代碼 -

class Image:
   def __init__( self, filename ):
      self._filename = filename

   def load_image_from_disk( self ):
      print("loading " + self._filename )

   def display_image( self ):
      print("display " + self._filename)

class Proxy:
   def __init__( self, subject ):
      self._subject = subject
      self._proxystate = None

class ProxyImage( Proxy ):
   def display_image( self ):
      if self._proxystate == None:
         self._subject.load_image_from_disk()
         self._proxystate = 1
      print("display " + self._subject._filename )

proxy_image1 = ProxyImage ( Image("HiRes_10Mb_Photo1") )
proxy_image2 = ProxyImage ( Image("HiRes_10Mb_Photo2") )

proxy_image1.display_image() # loading necessary
proxy_image1.display_image() # loading unnecessary
proxy_image2.display_image() # loading necessary
proxy_image2.display_image() # loading unnecessary
proxy_image1.display_image() # loading unnecessary

執(zhí)行上述程序生成以下輸出 -

代理模式設計有助于復制創(chuàng)建的圖像。 display_image()函數(shù)有助于檢查值是否在命令提示符下打印。


上一篇:單例模式下一篇:策略設計模式