"Gang of Four"の略称。『オブジェクト指向における再利用のためのデザインパターン』を書いたErich Gamma、Richard Helm、Ralph Johnson、John Vlissidesの四人(ないし彼らの提唱するデザインパターン体系)をさす。"GoF"の呼称は文化大革命の「四人組」に由来。
デザインパターン
1. Iterator パターン 2. Adapter パターン 3. TemplateMethod パターン 4. FactoryMethod パターン 5. Singleton パターン 6. Prototype パターン 7. Builder パターン 8. AbstractFactory パターン 9. Bridge パターン 10. Strategy パターン 11. Composite パターン 12. Decorator パターン 13. Visitorパターン 14. Chain of Responsibility パターン 15. Facadeパターン 16. Mediato…
AWS Dev Day 2023 Tokyoで登壇してきました。 無事、2年連続で登壇することができました。
前置き 引用元:Java言語で学ぶデザインパターン入門第3版 デザインパターンはクラスの再利用化を促進するものです。 再利用化を促進するとは、 クラスを部品として使えるようにするということであり、1つの部品を修正しても、他の部品の修正が少なくてすむ、ということなのです。 本記事は当ブログ管理人よしたろうによる『GoFデザインパターン入門シリーズ』です。本記事では、各デザインパターンの総合的理解ができることをコンセプトにしております。ピンポイントな情報ではなく、理解に必要な周辺知識をできる限り記述していきます。一記事あたりの文章量は多くなる傾向になります。あまりそういった記事が見当たらないこと、…
前置き 引用元:Java言語で学ぶデザインパターン入門第3版 デザインパターンはクラスの再利用化を促進するものです。 再利用化を促進するとは、 クラスを部品として使えるようにすることであり、1つの部品を修正しても、他の部品の修正が少なくてすむ、ことなのです。 本記事は当ブログ管理人よしたろうによる『GoFデザインパターン入門シリーズ』です。本記事を見るだけで、各デザインパターンの総合的理解ができることをコンセプトにしております。ピンポイントな情報ではなく、理解に必要な周辺知識をできる限り記述していきます。一記事あたりの文章量は多くなる傾向になります。あまりそういった記事が見当たらないこと、自身…
始めに 本記事は当ブログ管理人よしたろうによる『GoFデザインパターン入門シリーズ』です。本記事を見るだけで、各デザインパターンの総合的理解ができることをコンセプトにしております。ピンポイントな情報ではなく、理解に必要な周辺知識をできる限り記述していきます。一記事あたりの文章量は多くなる傾向になります。あまりそういった記事が見当たらないこと、自身の学習のためにそういった形式にしております。以前の記事で詳しく紹介した部分はリンクの引用をする場合もあります。 こちらの記事では以下の流れでデザインパターンの解説を行なっています。 この中で最も重要なのは以下のふたつ 現代のGoFデザインパターンの立ち…
ストラテジーパターンというGoFのデザインパターンが良いコード悪いコードでも紹介されていたので、素振りします。 自分の言葉で上手な言語化ができていないので、メリットは参考情報や良いコード悪いコードの購入、または別の方の記事を参考にしてください。 環境 Java 17 今回の処理 複数の言語の文章を、ひとつの言語に変換する。 ※ 変換の具体的なロジックは実装しない。 対応 文章と言語名が記載されたDTOを生成する。 @Data public class Question { private String sentence; private Locale locale; } ストラテジーパターンを…
Adapter メソッドが違うなどして継承できない2つのクラスの仲介をする 既存のクラスは修正せず、仲介するAdapterを作ることで修正範囲を最小限にできる デザインパターン ~Adapter~ 内部処理用のBeanクラスと画面から値が入ってくるBeanクラス同士が 直接、継承などで結び付けられない時に使うのか! 新規の画面と入力値がやりとりできないから、とかで新しくBeanを作ったことがあるような…
Prototype インスタンスの生成をnew Class()でなく、インスタンスから別のインスタンスを生成する 雛形を作っておき、それをコピーして使う 例が思い浮かばなかったのでTECHSCOREの記事を使います 図形描画で「直線を描画するクラス」と直線を組み合わせて「図形を描画するクラス」がある 図形描画クラスで定義した三角、星などの図形を描画する処理を 雛形管理クラスでmap.put("star",星型の描画処理)のようにインスタンスを保存する → 星型をたくさん描画したい時はmap("star")だけでOK 図形ごとにクラスを作成するとクラス数が多すぎて保守性が下がるのでPrototy…
Factory Method スーパークラスを定義して、処理はサブクラスが行う スーパークラスがサブクラスに依存しないから改修はサブクラスだけで済む スーパークラスは「登録する」ことだけ定義されているので、サブクラスに依存しない Builderパターンとの違い Builder クラスのアウトラインは抽象クラス 処理を持ったサブクラスと組み合わせて複雑な処理を実現 Factory Method 抽象クラスには概念くらいアバウトな定義だけ(登録するなど) サブクラスは登録する処理だったら何でもOK 抽象クラスがサブクラスに依存しないので修正範囲を切り分けられる Abstract Factoryパタ…