python 3シンプルなコンビネーションデザインを実現しました。


結合モードは、一つのカテゴリを一つの全体にまとめるものであり、複数の全体間の関係を構成し、ツリー構造によって全体を記述するものを使用する。
一般的な作成方法は、他のオブジェクトの要素であるカテゴリオブジェクトに複数の要素を追加します。簡単に言えば、一つの学校に本部があります。本社の下に教師と学生募集部があります。本部には分校があります。分校もあります。
私の個人的な見解では、設計パターンの使用は本で述べた具体的な問題の解決に限らず、豊富な業務経験が必要で、より良い柔軟な応用ができます。本人の能力は限られています。ここでは簡単な例を示して説明します。
まず新しい学校の基本クラスを作成します。

# 
class root:
  name = ''
  def __init__(self, name):
    self.name = name
  def add(self, root):
    pass 
以上の学校の基本的な初期化方法は、nameを受信するために、抽象的な方法addがあります。
学校の基質ができたら、具体的に学校クラスを新設し、root基類を継承する:

#   
class School(root):
  childrenroot = []
  def add(self, root):
    self.childrenroot.append(root) 
以上の学校クラスでは、rootベースクラスを継承し、add方法を実現し、root値を受信し、childrenrootリストに追加することで、現在のオブジェクトの下にサブノードを追加するか、または下位オブジェクトを追加することができる。
新入生募集の種類と教員部門を新設します。

#   
class StudentAdmissionDept(root):  
  def __init__(self, name):
    self.name = name
#   
class FacultyDepartment(root):  
  def __init__(self, name):
    self.name = name
以上の内容はとても簡単で、全部rootに引き継がれて、一つの初期化方法についてです。
呼び出しを開始します。まず学校本部の対象を新設し、この本部の対象に学生募集の対象と教員部門の対象を追加する。

root = School('  ')
root.add(StudentAdmissionDept('     '))
root.add(FacultyDepartment('     '))
本社のオブジェクトを新規作成し、分校エリアのオブジェクトを下に追加します。分校区の部門設置は本校と一致しています。

s1 = School('    ')
s1.add(StudentAdmissionDept('        '))
s1.add(FacultyDepartment('        '))
root.add(s1)
最初の桂林キャンパスを配置した後、root本部のadd方法を使って、現在の桂林キャンパスを下級に追加します。
いくつかのキャンパスを新たに作成します。

s2 = School('    ')
s2.add(StudentAdmissionDept('        '))
s2.add(FacultyDepartment('        '))
root.add(s2)

s3 = School('    ')
s3.add(StudentAdmissionDept('        '))
s3.add(FacultyDepartment('        '))
root.add(s3)  
以上の配置方法は最初のキャンパスとroot本部の校区の下級が一致しています。
最後に遍歴を使って各キャンパスの名前を印刷します。

print('
',root.name,' :
') for i in root.childrenroot: print(i.name)
結果:

レイアウトがないので、上記の結果は直観的に階層を表示していません。残りは自分でレイアウトして出力すればいいです。
現在の文章に対応するコードの作成において、最後の新設キャンパスと配置情報は、新しいクラスを作って、呼び出し、出力方法をパッケージ化して、組み合わせ設計モードを使いやすいです。
完全コードは以下の通りです。

# 
class root:
  name = ''
  def __init__(self, name):
    self.name = name
  def add(self, root):
    pass 
  
#   
class School(root):
  childrenroot = []
  def add(self, root):
    self.childrenroot.append(root) 

#   
class StudentAdmissionDept(root):  
  def __init__(self, name):
    self.name = name

 
#   
class FacultyDepartment(root):  
  def __init__(self, name):
    self.name = name
 
 
root = School('  ')
root.add(StudentAdmissionDept('     '))
root.add(FacultyDepartment('     '))

s1 = School('    ')
s1.add(StudentAdmissionDept('        '))
s1.add(FacultyDepartment('        '))
root.add(s1)

s2 = School('    ')
s2.add(StudentAdmissionDept('        '))
s2.add(FacultyDepartment('        '))
root.add(s2)

s3 = School('    ')
s3.add(StudentAdmissionDept('        '))
s3.add(FacultyDepartment('        '))
root.add(s3)  

print('
',root.name,' :
') for i in root.childrenroot: print(i.name)
以上はpython 3が簡単に組み合わせ設計モードの詳細を実現します。Pythonが組み合わせ設計モードを実現することについての資料は他の関連記事に注目してください。