Facadeパターン
Facadeパターンは、複数のクラスを使用する処理の窓口を作るデザインパターンです。
自分なりにFacadeパターンをクラス図にまとめてみました。
Facadeパターンのクラス図
Facadeパターンの解説
Facade(ファサード)は「正面」といった意味がある。複数のクラスを使用した複雑な処理を実行したい場合、
呼び出すたびにその複雑な処理を行うことは手間なので、その複雑な処理を実行するFacadeクラスを作成し、
呼び出す際にはそのFacadeクラスのメソッドを実行すれば、あとはFacadeクラスが複数のクラス群を使用して処理を実行してくれる。
正確かは分からないが、
クラス図ではClientはFacadeを使用しているだけなので依存関係がないので実線、
FacadeのfuncメソッドではSubSystemClass1,2,3の処理に依存するので点線とした。
Facadeパターンをどういう場合に使うか
上記の通りで、複数のクラスを用いた複雑な処理を呼び出す際に、その呼び出しを一度に行えるようにする時に用いる。
例えば、商品情報の取得、変更、ログ出力、メール送信、などが一連の処理となっている場合、それを別のロジックから呼び出したい場合など。
PlantUMLでFacadeパターンのクラス図を記述する
文頭のFacadeパターンのクラス図をPlantUMLで書いたときのソースです。
@startuml Facade Method
class Client{
}
class Facade{
+ func()
}
class SubSystemClass1{
}
class SubSystemClass2{
}
class SubSystemClass3{
}
Client --> Facade : use >
Facade ..> SubSystemClass1 : use >
Facade ..> SubSystemClass2 : use >
Facade ..> SubSystemClass3 : use >
@enduml
参考サイトURL
PHPによるデザインパターン入門 – Façade〜シンプルな唯一の窓口
デザインパターン ~Facade~ – Qiita