Python 디자인 패턴 '외관 패턴'예제 설명

高洛峰
풀어 주다: 2016-10-17 16:38:17
원래의
1218명이 탐색했습니다.

Python의 디자인 패턴 모양 패턴은 결합을 줄이기 위해 코드를 여러 모듈로 나누는 것을 옹호합니다. 다음은 예시를 사용하여 설명합니다.

응용 기능:

복잡하고 작은 함수를 많이 호출해야 할 때, 이러한 호출이 어느 정도 관련되어 있는 경우, 즉 하나의 호출이 연속되는 경우가 있습니다.

구조적 특징:

기존의 복잡함과 수많은 통화를 하나의 엔트리 클래스로 통합하고, 앞으로는 이 하나의 엔트리를 통해서만 통화가 가능합니다.

코드 구조 예:

class ModuleOne(object):
  def Create(self):
    print 'create module one instance'
  def Delete(self):
    print 'delete module one instance'
class ModuleTwo(object):
  def Create(self):
    print 'create module two instance'
  def Delete(self):
    print 'delete module two instance'
class Facade(object):
  def __init__(self):
    self.module_one = ModuleOne()
    self.module_two = ModuleTwo()
  def create_module_one(self):
    self.module_one.Create()
  def create_module_two(self):
    self.module_two.Create()
  def create_both(self):
    self.module_one.Create()
    self.module_two.Create()
  def delete_module_one(self):
    self.module_one.Delete()
  def delete_module_two(self):
    self.module_two.Delete()
  def delete_both(self):
    self.module_one.Delete()
    self.module_two.Delete()
로그인 후 복사


프록시 모드와 다소 유사하지만 차이점은 모양 모드입니다. 뿐만 아니라 프록시 서브시스템의 관점에서 서브시스템의 각 모듈의 기능은 서브시스템의 각 모듈의 기능을 결합하여 외부 세계에 더 높은 수준의 인터페이스를 제공함으로써 의미상 서브시스템 수준의 요구를 충족시킵니다.

시스템 기능이 지속적으로 확장됨에 따라 결합을 줄이고, 시스템 코드 복잡성을 줄이고, 유지 관리성을 향상시키기 위해 시스템을 여러 하위 시스템 또는 하위 모듈로 나누어야 하는 경우 일반적으로 프록시 모드가 사용됩니다.

다른 예를 살펴보겠습니다.

class small_or_piece1: 
  def __init__(self): 
    pass 
    
  def do_small1(self): 
    print 'do small 1' 
    
class small_or_piece_2: 
  def __init__(self): 
    pass 
    
  def do_small2(self): 
    print 'do small 2' 
    
class small_or_piece_3: 
  def __init__(self): 
    pass 
    
  def do_small3(self): 
    print 'do small 3' 
  
class outside: 
  def __init__(self): 
    self.__small1 = small_or_piece1() 
    self.__small2 = small_or_piece_2() 
    self.__small3 = small_or_piece_3() 
    
  def method1(self): 
    self.__small1.do_small1()  ##如果这里调用的不只2两函数,作用就显示出来了,可以把原本复杂的函数调用关系清楚化,统一化 
    self.__small2.do_small2() 
      
  def method2(self): 
    self.__small2.do_small2() 
    self.__small3.do_small3() 
  
if __name__ == '__main__': 
  osd = outside() 
  osd.method1() 
  osd.method2()
로그인 후 복사

결과:

do small 1 
do small 2 
do small 2 
do small 3
로그인 후 복사


원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿