Quantcast
Channel: 初心者タグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 21511

Java言語で学ぶデザインパターン入門の4章まとめ

$
0
0

お久しぶりです。白々です。
先日エンジニアの先輩にデザインパターンをご存知でない!?という冷静なツッコミを頂き、その後結城浩さんが書かれた「Java言語で学ぶデザインパターン入門」を渡されたので勉強することにしました。
ただ、本を一読しても覚えられないので覚書として記事にしようと思いました。
今回で4回目です。
完走できるように頑張ります。
また、「Java言語で学ぶデザインパターン入門」には、サンプルプログラムも有りますが、著作権の都合上省かせて頂きます。御了承ください。

前回は、「Template Methodパターン」に関しての記事を作成しました。
前回の記事は、後述のappendixに記載しています。
今回は、「Factory Methodパターン」に関して記載したいと思います。
また、「Factory Methodパターン」には、サンプルプログラムも有りますが、著作権の都合上省かせて頂きます。御了承ください。

第4章 Factory Method-インスタンス作成をサブクラスに任せる

Factory Methodは、簡単にいうとTemplate Methodパターンをインスタンス生成に適用した物をだそうです。

イメージしにくい人もいると思うので、例を記載します。
工場を思い浮かべてみてください。
工場では、製品が作成されています。
しまむらやユニクロなどの大手のチェーン店では、Tシャツ大体工場とかで作成されていることが多いですよね?
大きさは、大体Sサイズならこれくらい、Mサイズならこれくらいとサイズごとに大体大きさが決まっていると思います。
しかし、材質や、デザインは、企業によって異なると思います。
工場では他にも、パソコン等も作成されていると思います。
パソコンだったら、メモリは16GBでSSDかHDDかみたいに分かれていくと思います。
このように、工場内で何を作っても製品ですよね?
工場で何かを作ることをスーパークラスとすると、Tシャツ工場は、サブクラスとなります。
しかし、パソコン工場というインスタンスも作ることができます。
抽象化したクラスを使うことで共通の概念を持った全く違うインスタンスを作成することができます。

このように、インスタンスをどのように作成するかをスーパークラス側で決めておき、具体的な処理をインスタンスに任せることによってインスタンスの生成の枠組みとインスタンスの生成とを分けて考えることができます。
また、具体的な処理をインスタンスに任せることによって、スーパークラスは、インスタンスに依存しない状況が作れます。

Factory Methodを使う時の注意事項

「Factory Methodパターン」で作成したサブクラスは、スーパークラスにインスタンスの作り方を決められます。
なので、スーパークラスをちゃんと理解する必要があります。

まとめ

スーパークラスでインスタンスをどのように作成するかを決め、サブクラスで具体的な処理を記載する「Factory Methodパターン」について学びました。

第4章感想

Factory Methodパターンだけなく、基本的にパターンを使うときは、スーパークラスをちゃんと理解する必要があると思いました。
なので、スーパークラスにはどのような意味なのかをコメントで書こうと思います。
説明で使った例は、後日pythonで実装しようと思います。

最後に

何か間違っているところがあれば、ご指摘していただけると嬉しいです!

appendix

前回の記事

https://qiita.com/sirajirasajiki/items/53e1d2aea166190f9a6f


Viewing all articles
Browse latest Browse all 21511

Latest Images

Trending Articles