デザインパターンについて少しまとめてみた

1 min read読了の目安(約1400字

デザインパターンとは

ソフトウェア開発におけるデザインパターンとは、過去のソフトウェア設計者が発見し編み出した設計ノウハウを蓄積し、名前をつけ、再利用しやすいように特定の規約に従ってカタログ化したものである。

引用元

簡単にいうと、設計ノウハウの塊のことです。また、デザインパターンは開発者に対し、「よく直面する問題に対する設計」を提供してくれます。デザインパターンをうまく利用すれば、自分が試行錯誤せずとも、先人の知恵を生かして、プロダクトに活かすことができるといことです。

デザインパターンは多く存在し、奥が深いので今回はSingletonFactory Methodだけ解説します。

Singleton

Singletonパターンは生成されるインスタンスを一つにするパターンのことです。別の言い方をすると、「インスタンスが一つしか存在しないことを保証」するといことです。下記のような用途で使われます。

  • インスタンスの状態を保持したい時
  • クラス間で共通のメソッドやプロパティにアクセスしたい時

javaでのサンプルコード

public class RegisterNote{
    private static RegisterNote registerNote = new RegisterNote();
    private RegisterNote(){}
    public static RegisterNote getInstance(){
        return registerNote;
    }
}

上記のコードではコンストラクタをprivateにすることで外部からインスタンスを生成できなくしています。外部のclassがRegisterNoteクラスのインスタンスにアクセスしたい場合、getInstance()関数を経由しなければなりません。

上記の例ではgetInstance()が初めて呼ばれた時にRegisterNoteクラスが初期化され、それ以降はregisterNoteオブジェクトが返される形になっています。

引用元

Factory Method

インスタンス化のロジックをサブクラスに委譲するパターンです。つまり、オブジェクトの生成を担うメソッドを定義することによって、サブクラス側でインスタンス時の処理を別個で行うことができます。

インスタンスの生成をメソッドに任せる→クラス名を指定する必要がなくなる、のでサブクラスごとに処理を分岐させることができます。

注意点として、サブクラスで処理が実装されない可能性を考慮して

  • デフォルトの処理を記述しておく
  • エラーの処理を書いておく

などが必要かと思います。