Dev/DesignPattern

[Design Pattern] Proxy Pattern

황빵 2023. 4. 26. 12:07

Proxy Pattern (Structural Design Pattern)

프록시 패턴은 클라이언트가 서버에 접근할 때,
중간에 프록시를 두어 클라이언트가 서버에 직접 접근하는 것이 아닌 프록시를 통해 접근하도록 하는 패턴이다.

why??

- 클라이언트가 서버에 직접 접근하는 것을 막고 싶을 때

- 클라이언트가 서버에 접근할 때, 중간에 뭔가를 처리하고 싶을 때

- 클라이언트가 서버에 접근할 때, 서버에 접근하기 전에 뭔가를 처리하고 싶을 때

Proxy Pattern 구성요소

  • Subject : 클라이언트가 접근할 수 있는 인터페이스
  • RealSubject : 실제 서버에 접근하는 클래스
  • Proxy : 클라이언트가 접근할 때, 중간에 두는 클래스
  • Subject 인터페이스를 구현하고, RealSubject를 가지고 있다 클라이언트가 Proxy를 통해 접근하면, Proxy는 RealSubject를 통해 서버에 접근한다.

Proxy Pattern 예시


class Animal:  # Subject
    def speak(self):
        pass

class Cat(Animal): # RealSubject
    def speak(self):
        print("meow")

# 직접 접근
kitty = Cat()
kitty.speak()


class CatProxy:  # Proxy
    def __init__(self, cat:Cat): 
        self.cat = cat 

    def speak(self): 
        print("before speak")
        self.cat.speak()
        print("after speak") 

# 프록시를 통해 접근
kitty_proxy = CatProxy(kitty)
kitty_proxy.speak()
728x90
반응형