👁️

Web開発者ロードマップを学習する 第10章デザインパターン

2021/04/11に公開

はじめに

WEB DEVELOPER Roadmap 2021
webエンジニアが身につけておくべきスキルの順序が示されています。
このロードマップに沿って、各スキルの要点を抑えた記事を書きます。

WEB DEVELOPER Roadmap 2021 Introduction

今回はデザインパターンについて学習します。
まとめた記事は今後リンク更新していきます!

デザインパターンとは?

  • オブジェクト指向で開発する際の再利用性の高い設計のパターン
  • パターンは23種類ある
  • フレームワークに取り込まれているものもある
  • GoFという本よく遭遇する問題とそれに対処する設計として示している

デザインパターンを使うメリット

  • 再利用性の高い設計ができる
  • 初心者でも知識を利用して設計が可能
  • 設計力の向上
  • 設計についての意思疎通が用意になる

デザインパターンのカテゴリ

  • 生成に関するパターン
    → インスタンスの生成を依頼する
  • 構造に関するパターン
    → プログラムの構造に関する
  • 振る舞いに関するパターン
    → オブジェクトの振る舞いに関する

生成に関するパターン

Abstract Factory

  • 抽象的な工場を意味する
  • インスタンスの生成を専門に行うクラスを用意
  • クラスの中で関連する部品のインスタンスを生成する

AbstractFactory パターン

Builder

  • 建築者を意味する
  • 同じ作成過程で異なる表現形式の結果を得るためのパターン
  • オブジェクトの生成をより柔軟にし、そのオブジェクトの「作成過程」もコントロールすることが可能

Builder パターン

FactoryMethod

  • インスタンスの生成方法をスーパークラスで定める
  • インスタンスの生成をサブクラスで行う
  • 柔軟に生成するインスタンスを選択可能

FactoryMethod パターン

Prototype

  • 試作品、原型を意味する
  • 予めある原型からインスタンスを生成するためのパターン
  • 原型を登録、それからコピーするイメージ

Prototype パターン

Singleton

  • 一枚札を意味する
  • クラスのインスタンスが一つしかないことを保証するためのパターン

Singleton パターン

構造に関するパターン

Adapter

  • 適合を意味する
  • インタフェースに互換性の無いクラス同士を組み合わせることを目的としたパターン
  • 2つの方法がある
  • 継承を利用した方法
  • 委譲を利用した方法

Adapter パターン

Bridge

  • 橋を意味する
  • スーパークラスのメソッドの実装
  • 機能と実装を分け拡張が可能

Bridge パターン

Composite

  • 複合物を意味する
  • 容器と中身を同一視して、再帰的な構造を作るパターン
  • PCのファイル構造のようなもの

Composite パターン

Decorator

  • 装飾者を意味する
  • 機能を一つひとつかぶせていくイメージ
  • 柔軟な機能拡張方法を提供する

Decorator パターン

振る舞いに関するパターン

Itarator

  • 英語で繰り返すという意味
  • 要素の集合から、各要素に順番にアクセスするための設計

Iteratorパターン

TemplateMethod

  • テンプレート機能を持つ
  • スーパーっクラスで大まかな処理を定め、サブクラスで具体的内容を実装

TemplateMethod パターン

Strategy

  • 戦略を意味する
  • アルゴリズムによってクラスを分ける
  • 柔軟でメンテナンスしやすい

Strategyパターン

Proxy

  • 代理人を意味する
  • 本人じゃなくても可能な処理をする

Proxyパターン

Facade

  • 建物の正面を意味する
  • 窓口となるクラスを通して複数のクラスで処理が可能

Facadeパターンとは

Visitor

  • 訪問者を意味する
  • 処理の追加を簡単にする

Visitor パターンとは

Chain of Responsibility

  • 責任の鎖を意味する
  • 複数のオブジェクトをチェーン(鎖)のようにつなぐイメージ
  • メッセージを他のクラスのオブジェクトに送って処理することが可能

Chain of Responsibility パターンとは

Mediator

  • 仲裁人、調停者を意味する
  • 複数のオブジェクト間を仲裁人を介して処理を行うようにする

Mediatorパターン

Observer

  • 観察者を意味する
  • 観察対象の状態が変化すると通知する仕組み

Observer パターン

Memento

  • 記念品を意味する
  • インスタンスのあるときの状態をスナップショットとして保存
  • インスタンスの状態を復元することが可能

Memento パターン

State

  • 状態を意味する
  • 状態をクラスで表現する
  • 状態の変化で振る舞いが変わる場合に使われる

State パターン

Flyweight

  • フライ級を意味する
  • インスタンスを共有し、無駄を減らす
  • プログラム全体を軽くすることを目的としたパターン

Flyweight パターン

Command

  • 命令を意味する
  • 命令をオブジェクトにし、そのオブジェクトを引数に渡す
  • オブジェクトを複数組み合わせて使う

Commandパターン

Interpreter

  • 解釈者、説明者を意味する
  • 命令を解析し、結果に合わせた処理が実行可能

Interpreter パターン

参照

デザインパターン (ソフトウェア) Wikipedia
デザインパターン TECHSCORE
デザインパターン一覧 わくわくBank

Discussion