python設計模式12-代理模式

1. 代理模式(Proxy)介紹

UML類圖

在這裏插入圖片描述

角色介紹

  • Subject類,通過接口或抽象類聲明真實角色實現的業務方法。
  • Proxy類,實現抽象角色,是真實角色的代理,通過真實角色的業務邏輯方法來實現抽象方法,並可以附加自己的操作
  • RealSubject,實現抽象角色,定義真實角色所要實現的業務邏輯,供代理角色調用

代理模式的適用場景 一個設計模式,只有當它有了應用場景,它才具備存在的價值。代理模式有很多可以使用的場景,主要分爲如下幾類:

  • 遠程代理:爲一個對象的地址空間提供局部代表。
  • 虛擬代理:根據需要來創建開銷較大的對象。
  • 保護代理:用於對象應該具有不同訪問權限的場景,控制對原始對象的訪問。
  • 智能指引:取代簡單的指針,它在訪問對象時執行一些附加操作。

2. 示例

"""Proxy Pattern with Python Code
"""

from abc import abstractmethod, ABCMeta


class Subject(metaclass=ABCMeta):
    @abstractmethod 
    def Request(self):
        pass


class RealSubject(Subject):
    def Request(self):
        print("Receive a request")


class Proxy(Subject):
    def __init__(self):
        self.subject = None

    def Request(self):
        self.subject = RealSubject()
        self.subject.Request()


class Client(object):
    def main(self):
        p = Proxy()
        p.Request()


if __name__ == '__main__':
    Client().main()      

輸出:

# ./Proxy.py    
Receive a request

參考:
https://my.oschina.net/zhangjiawen/blog/480311
https://zhuanlan.zhihu.com/p/92051694

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章