generated at
Facadeパターン
from GoF

複数classを利用する際に、その組み合わせ順などを定義した窓口となるclassを用意する
Facase Classは薄い
複数classの処理を明記すること、が責務であって複雑な実装などは持たない
利用者はFacase Classの内部やっていることを直接呼び出すこともできる
これを禁止すること(つまりFacase Classの利用を強制すること)はFacase Classの責務ではない
みたいなルール(?)があるらしい、原典にはあたってないので知らんけどmrsekut


コード例 ref
DocumentBuilder というfacase classを用意しておくことで、
Documentを書く際に、「複数のclassをこの順序で組み合わせること」を特に考慮せず、 write() の引数の赴くままにコードを書けばやりたいことが完了する
ts
class DocumentBuilder { static write = (userId: string, title: string, body: string[]) => { const user: User = UserDB.fetchUser(userId); // 複数のclassを使って個別に処理をしている HeaderBuilder.write(title, user.name); BodyBuilder.write(body); FooterBuilder.write(); } } // この1methodだけ知っていればいい DocumentBuilder.write( '100', '今さら聞けないファサードパターン', [ 'ファサードパターンとは・・・', '例として挙げられるのは・・・', '続いて実際のコードを見ていきましょう・・・' ] );





コード例がシンプルでさっとわかって良い