ホームページ  >  記事  >  バックエンド開発  >  Pythonのデザインパターン「出現パターン」例解説

Pythonのデザインパターン「出現パターン」例解説

高洛峰
高洛峰オリジナル
2016-10-17 16:38:171172ブラウズ

Python の設計パターンの出現パターンでは、結合を減らすためにコードを複数のモジュールに分割することが推奨されています。以下では例を使用して説明します。

アプリケーションの機能:

多くの複雑で小さな関数を呼び出す必要があり、これらの呼び出しがある程度関連している場合、つまり 1 つの呼び出しが連続している場合。

構造的特徴:

元の複雑で多数の呼び出しを 1 つのエントリ クラスに統合します。今後は、この 1 つのエントリを通じてのみ呼び出すことができます。

コード構造の例:

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


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。