構造パターンの一つFacadeパターンについて。
Facadeパターンとは
Facadeパターン
(ファサードと読む)
Facade : 建物の正面のこと。
各クラスが関連しあって実行される複雑な処理を、Facadeが各クラスを利用して
わかりやすく実行できるようにする。
(イメージ)
クライアント → Facade(正面) ⇆ クラス1、クラス2、クラス3、、、
(目的)
複雑なシステムを扱うための、シンプルなインターフェースを提供すること
(仕組み)
システムを構成するクラスを作成する。
システムを構成するクラスを利用するためのFacadeを作成し、ユーザに対するインターフェースを提供する。
(構成要素)
Facade : システムを構成する様々なクラスを利用するためのクラス
その他のクラス:いろんな処理を記載されたFacadeクラス
サンプルプログラム
pythonによるサンプルプログラム
class Knife:
def __init__(self, name):
self.__name = name
def cut_vegetables(self):
print(f'I cut vegetable by {self.__name}')
class Boiler:
def __init__(self, name):
self.__name = name
def boil_vegetables(self):
print(f'I boil vegetables by {self.__name}')
class Frier:
def __init__(self, name):
self.__name = name
def fry_vegetables(self):
print(f'I fry vegetables by {self.__name}')
class Cook:
def __init__(self, knife: Knife,
frier: Frier, boiler: Boiler):
self.__knife = knife
self.__frier = frier
self.__boiler = boiler
def cook_dish(self):
self.__knife.cut_vegetables()
self.__frier.fry_vegetables()
self.__boiler.boil_vegetables()
if __name__ == '__main__':
knife = Knife('My knife')
boiler = Boiler('My Boiler')
frier = Frier('My Frier')
knife.cut_vegetables()
boiler.boil_vegetables()
frier.fry_vegetables()
print('='*10)
cook = Cook(knife, frier, boiler)
cook.cook_dish()