【プログラミング学習】 デザインパターンを学ぶメリット

こんにちは!CODE CLUB965のKです!

今回はデザインパターンについて書こうと思います。

デザインパターンという言葉を聞いたことはありますか?
学んだことまである方は、なかなかいないかもしれません。

デザインパターンとは何か?

デザインパターンとは、状況ごとのシステム設計のカタログです。
「こういう状況であれば、こう設計した方が良いよ」というものが記載されたものになります。

従って、デザインパターンを知っておくと、状況に応じた最適な設計をすることができるようになります。

デザインパターンは、過去のエンジニアの集合知になるので、自分でゼロから考えるよりも、良い設計が可能になります。

GoFのデザインパターン

デザインパターンの一般的な意味は上記の通りなのですが、
システム開発においては、デザインパターンと言うと、ほぼGoFのデザインパターンのことを言います。

GoFのデザインパターンとは、書籍『オブジェクト指向における再利用のためのデザインパターン』に記述された、オブジェクト指向プログラミングに関するデザインパターンです。

書籍は4名の共著なのですが、その4名が「Gang of Four」と呼ばれており、そこから「GoFのデザインパターン」と言われています。

GoFのデザインパターンは全部で以下の23個です。

・Abstract Factory
・Builder
・Factory Method
・Prototype
・Singleton
・Adapter
・Bridge
・Composite
・Decorator
・Facade
・Flyweight
・Proxy
・Chain of Responsibility
・Command
・Interpreter
・Iterator
・Mediator
・Memento
・Observer
・State
・Strategy
・Template Method
・Visitor

たくさんあって、勉強するのも大変に思ってしまいますね。笑

全てのパターンにおいて、「利用シーン」「設計方法」の両方が明確に定義されています。
従って、内容の把握ができていれば、割と利用するのは簡単です。

例えば、「あるクラスのインスタンスは1つしか生成できないようにしたい」とします。
もちろん、自分でクラス設計をしても実装はできると思います。
しかし、この状況の設計方法はGoFのデザインパターンで定義がされていて、それがSingletonパターンです。

Singletonパターンで実装をすることで、先人の知見を活用できるので、考慮漏れ等が発生する可能性が非常に低くなります。

デザインパターンを学ぶメリット

デザインパターンを学ぶメリットは大きく3つあります。

1. デザインパターンを利用できるようになる

当たり前のメリットですね。
学んで使えるようになることで、開発するプログラムの品質を向上することができます。

2. 設計の考え方を学ぶことができる

23個のデザインパターン一通りに目を通すことで、設計をするうえで、「何を考えなくてはならないのか」「どういう点に注意する必要があるのか」「良い設計とは何なのか」を学ぶことができます。

デザインパターンを使いこなせるようになるのは大変で少し時間もかかりますが、一通り学んで設計の考え方を身に付ける価値は非常に高いです。

3. 他人が書いたコードが読みやすくなる

意外なメリットかもしれませんが、デザインパターンを学ぶと他人が書いたコードが読みやすくなります。

なぜなら、コーディングにデザインパターンが活用されていることは多く、デザインパターンを理解していないと、なぜそのようなコーディングになっているのかが理解できないからです。

コードを読んだときに、「あぁ、Builderパターンで実装されているのね。」ということがわかると、コードが良く理解できます。

最後に

すぐに活用しなくても、GoFのデザインパターンを学ぶメリットは多いです。
ぜひ、学んでみて下さい!

それでは、また!

Follow me!