6
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

デザインパターンを勉強してみる --第1回 導入編--

Last updated at Posted at 2017-08-18

はじめに

SEになってこのかた、デザインパターンというものを勉強したことがなかったので
この度やってみようと思います。
投稿では自分の頭の中を整理するために、勉強の結果をまとめていこうかと。
また、僕みたいにデザインパターンを学んだことがない人とか、あと、開発経験がそんなになくて
少しでも開発のノウハウが欲しい人向けに書こうかと思います。
(何回かに分けて書きます。)

デザインパターンとは

デザインパターンとは、簡単に言うと「設計のカタログ」です。
JavaやRubyなど、オブジェクト指向の言語で過去のエンジニアが解決してきた方法(設計)が、
デザインパターンとしてまとめられているのです。

デザインパターンと言ってもいろいろとあるらしいですが、良く聞くのはGoF(Gnag of Four)です。
「生成」や「構造」、「振る舞い」の3つに分類された、23のパターンがあります。

※GoF
"Gang of Four"の略称。『オブジェクト指向における再利用のためのデザインパターン』を書いた
Erich Gamma、Richard Helm、Ralph Johnson、John Vlissidesの四人(ないし彼らの提唱するデザインパターン体系)をさす。"GoF"の呼称は文化大革命の「四人組」に由来。
参照:http://d.hatena.ne.jp/keyword/GoF

デザインパターンの目的

デザインパターンに取り組むべき主な目的は、以下の3つです。
####ペストプラクティスを体得する。
・エンジニアが試行錯誤して生み出したプログラム設計のベストプラクティスを
 少ない時間で体得する(利用する)ことができる
 ⇒プログラミングの効率化もでき、先人のアイデアを学ぶこともできる。

再利用性の高いコードを書く

・コードの見通しも良くなり、メンテナンス性も高まる

エンジニア同士の共通言語にする

・エンジニアの中には、デザインパターンに親しんだ人も数多くおり、
 デザインパターンが考慮されたコードは、他のエンジニアにとっても読みやすいコードになる

デザインパターンの種類

GoFデザインパターンという定番パターンは全部で23種類あります。
それぞれ3つに分類されています。

オブジェクトの生成に関するパターン

Abstract Factory Prototype
Builder Singleton
Factory Method

プログラムの構造に関するパターン

Adapter Decorator Proxy
Bridge Facade
Composite Flyweight

オブジェクトの振る舞いに関するパターン

|Chain of Responsibility|Mediator|Strategy|
|:-:|:-:|:-:|:-:|
|Command|Memento|Template Method|
|Interpreter|Observer|Visitor|
|Iterator|State||

次回

今回は導入編ということで触りだけだったので、物足りない感があるかもです。
次回から、本題の各パターンの勉強に入ります。
といっても23パターン全てについて学ぶ気はなく、特に仕事の現場で使えそうなパターンに
焦点をあてて勉強しようかと思います。
次回はFacade(ファサード)パターンについて勉強しようと思います!

最後になりますが、不備やご意見などがあればコメントを頂けると嬉しいです。

6
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?