LoginSignup
1
0

More than 1 year has passed since last update.

デザインパターン(メモ用)

Last updated at Posted at 2022-10-26

デザインパターンとは

オブジェクト指向においてクラスの再利用性を高めるための設計テンプレート
大きく分けて下の3パターン

  • 生成
  • 構造
  • 振る舞い
生成 構造 振る舞い
Factory Method Adaptor Chain of Repository
Abstract Factory Bridge Command
Builder Composite Iterator
Prototype Decorator Mediator
Singleton Facade Memento
Fliweight Observer
Proxy State
Strategy
Template Method
Visitor

前提知識

生成

Factory Method

他のクラスのコンストラクタをサブクラスで上書き可能な自分のメソッドに置き換えることで、 アプリケーションに特化したオブジェクトの生成をサブクラスに追い出し、クラスの再利用性を高めることを目的とする。

概要

  • まず、生成されるObjectの抽象クラスProductクラスを抽象化して定義する。
  • 次に、それらのObjectを生成する Creatorクラスを実装する。
  • ClientはCreatorを呼び出して実行する。

Abstract Factory

FactroyMethod集まりで出来た抽象クラス。
FactoryMethodで生成されるオブジェクト同士が密接に関係しあう時にその関係性を意識させることを強制することができる。

概要

  • まず、生成されるObjectの抽象クラスProductクラスを抽象化して定義する。(例:Button, Window)
  • 次に、それらのObjectを生成する Factoryクラスを同じく抽象クラスで定義する。
  • 生成される環境や条件によってProductクラスとFactoryクラスを実装する。(例:WinButton, MacButton)
  • ClientはAbstractFactoryを呼び出して実行する。

デザインパターン概略図.drawio.png

  1. 生成されるObject(Prodcut)にもinterfaceが必要
  2. Clientからは実際にはどのConcreteFacotoryが動いているのかは隠されている。
  3. Facotryの生成をApplicationの初期化の際に行い、環境情報などから factoryの型を決定する。

Builder

Prototype

Singleton

生成するインスタンスの数を1つに制限する。
newによるメモリの消費を抑えたり、プログラム中でインスタンスの状態を常に保持・更新する場合やクラス間で共通のデータとして常にアクセスする必要がある場合に使用する。

概要

  • publicのコンストラクタを持たず、privateのコンストラクタを持つ。
  • private変数として、自身のクラスインスタンスを持つ。
  • public関数として、自身のクラスインスタンスを返すメソッドを持つ。

structure-ja-2x.png

構造

Adaptor

Bridge

Composite

Decorator

Facade

振る舞い

Chain of Repository

Command

Iterator

Mediator

Memento

Observer

State

Strategy

Template Method

Visitor

参考

https://refactoring.guru/ja/design-patterns/structural-patterns (理解)
https://www.techscore.com/tech/DesignPattern/ (実践)

1
0
1

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
1
0