シンプルなデザインパターン:デコレーターパターン
2018年3月16日1分で読める

シンプルなデザインパターン:デコレーターパターン

この記事はAIによって翻訳されたため、不正確な場合があります。

免責聲明: このブログ記事の翻訳はAIによって生成されました。翻訳の正確性について保証はありません。重要な情報については、元の記事をご参照ください。

このシリーズが何についてなのか分からない場合は、シリーズの最初の記事へのリンクをご覧ください。その記事の最初のセクションは、シリーズの動機と紹介です。このシリーズの目的をより理解するのに役立つことを願っています。

デコレーターパターン

デコレーターパターン図

デコレーターパターンは一般的で有用なパターンです。複数のオブジェクト、関数、ビューがある場合、ベースフォームを作成し、追加機能(デコレーター)でベースフォームを装飾することができます。

OK、それは素晴らしいことは分かりましたが、どうやって行うのでしょうか?デコレーターは高階関数の概念に似ています。デコレーターはベースフォームを引数として取り、それに装飾を施して返します。

ボタンUIを構築したいとします。ボタンには次のような独立した動作があります:

  1. ホバー時のポップオーバー情報
  2. アクション確認
  3. 特定のトラッキングコードのトリガー

ボタンを次のように設計できます:

var PopoverButton = new PopoverDecorator(new Button())
// またはReactスタイルで
// const PopoverButton = withPopover(Button);
var PopoverActionConfirmButton = new PopoverDecorator(new ActionConfirmDecorator(new Button()))
// など...

PopoverDecoratorクラスは任意のButtonを引数として取り、装飾されたボタンを返し、ActionConfirmDecoratorも同様です。このアプローチはButtonの結合度を高めます。ベースフォームの特定の動作を分離することで、将来これらの機能を簡単に再利用および拡張できます。

なんてエレガントなパターンでしょうか?

結論

この記事はデコレーターパターンの非常に簡潔な紹介です。デコレーターパターンの核心的なアイデアを説明しています。詳細について知りたい場合は、以下の参考文献セクションをチェックしてください。

デコレーターパターンは私のお気に入りのパターンの一つです。高階関数は非常に強力な概念です。プロジェクトでReactコンポーネントやユーティリティ関数を設計する際によく使用しており、同僚がより幸せになることを願っています。読んでいただき、ありがとうございます!

参考文献