예를 들어 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 


좋은 웹페이지 즐겨찾기