👁️
Web開発者ロードマップを学習する 第10章デザインパターン
はじめに
WEB DEVELOPER Roadmap 2021 に
webエンジニアが身につけておくべきスキルの順序が示されています。
このロードマップに沿って、各スキルの要点を抑えた記事を書きます。
WEB DEVELOPER Roadmap 2021 Introduction
- Git - Version control
- Basic Terminal Usage
- Data Structures & Algorithms
- Git Hub
- Licenses
- Semantic Versioning
- SSH
- HTTP/HTTPS and APIs
- Design Patterns
- Character Encodings
今回はデザインパターンについて学習します。
まとめた記事は今後リンク更新していきます!
デザインパターンとは?
- オブジェクト指向で開発する際の再利用性の高い設計のパターン
- パターンは23種類ある
- フレームワークに取り込まれているものもある
- GoFという本がよく遭遇する問題とそれに対処する設計として示している
デザインパターンを使うメリット
- 再利用性の高い設計ができる
- 初心者でも知識を利用して設計が可能
- 設計力の向上
- 設計についての意思疎通が用意になる
デザインパターンのカテゴリ
-
生成に関するパターン
→ インスタンスの生成を依頼する -
構造に関するパターン
→ プログラムの構造に関する -
振る舞いに関するパターン
→ オブジェクトの振る舞いに関する
生成に関するパターン
Abstract Factory
- 抽象的な工場を意味する
- インスタンスの生成を専門に行うクラスを用意
- クラスの中で関連する部品のインスタンスを生成する
Builder
- 建築者を意味する
- 同じ作成過程で異なる表現形式の結果を得るためのパターン
- オブジェクトの生成をより柔軟にし、そのオブジェクトの「作成過程」もコントロールすることが可能
FactoryMethod
- インスタンスの生成方法をスーパークラスで定める
- インスタンスの生成をサブクラスで行う
- 柔軟に生成するインスタンスを選択可能
Prototype
- 試作品、原型を意味する
- 予めある原型からインスタンスを生成するためのパターン
- 原型を登録、それからコピーするイメージ
Singleton
- 一枚札を意味する
- クラスのインスタンスが一つしかないことを保証するためのパターン
構造に関するパターン
Adapter
- 適合を意味する
- インタフェースに互換性の無いクラス同士を組み合わせることを目的としたパターン
- 2つの方法がある
- 継承を利用した方法
- 委譲を利用した方法
Bridge
- 橋を意味する
- スーパークラスのメソッドの実装
- 機能と実装を分け拡張が可能
Composite
- 複合物を意味する
- 容器と中身を同一視して、再帰的な構造を作るパターン
- PCのファイル構造のようなもの
Decorator
- 装飾者を意味する
- 機能を一つひとつかぶせていくイメージ
- 柔軟な機能拡張方法を提供する
振る舞いに関するパターン
Itarator
- 英語で繰り返すという意味
- 要素の集合から、各要素に順番にアクセスするための設計
TemplateMethod
- テンプレート機能を持つ
- スーパーっクラスで大まかな処理を定め、サブクラスで具体的内容を実装
Strategy
- 戦略を意味する
- アルゴリズムによってクラスを分ける
- 柔軟でメンテナンスしやすい
Proxy
- 代理人を意味する
- 本人じゃなくても可能な処理をする
Facade
- 建物の正面を意味する
- 窓口となるクラスを通して複数のクラスで処理が可能
Visitor
- 訪問者を意味する
- 処理の追加を簡単にする
Chain of Responsibility
- 責任の鎖を意味する
- 複数のオブジェクトをチェーン(鎖)のようにつなぐイメージ
- メッセージを他のクラスのオブジェクトに送って処理することが可能
→Chain of Responsibility パターンとは
Mediator
- 仲裁人、調停者を意味する
- 複数のオブジェクト間を仲裁人を介して処理を行うようにする
Observer
- 観察者を意味する
- 観察対象の状態が変化すると通知する仕組み
Memento
- 記念品を意味する
- インスタンスのあるときの状態をスナップショットとして保存
- インスタンスの状態を復元することが可能
State
- 状態を意味する
- 状態をクラスで表現する
- 状態の変化で振る舞いが変わる場合に使われる
Flyweight
- フライ級を意味する
- インスタンスを共有し、無駄を減らす
- プログラム全体を軽くすることを目的としたパターン
Command
- 命令を意味する
- 命令をオブジェクトにし、そのオブジェクトを引数に渡す
- オブジェクトを複数組み合わせて使う
Interpreter
- 解釈者、説明者を意味する
- 命令を解析し、結果に合わせた処理が実行可能
参照
デザインパターン (ソフトウェア) Wikipedia
デザインパターン TECHSCORE
デザインパターン一覧 わくわくBank
Discussion