Open4

デザインパターン

haseyuyhaseyuy

Singleton

  • アプリケーション内でインスタンスを一つだけ生成することを保証するデザインパターン
  • privateのコンストラクタを持つ
  • private変数として、自身のクラスインスタンスを持つ
  • public関数として、自身のクラスインスタンスを返すgetterメソッドを持つ
export class Singleton {
    private static instance: Singleton;
    // コンストラクタをprivateにすることでnewで生成されるのを防ぐ
    private constructor() { }
    public static getInstance(): Singleton {
        if (!this.instance) {
            this.instance = new Singleton();
        }
        return this.instance;
    }
}

const a = Singleton.getInstance();
const b = Singleton.getInstance();

if (a === b) {
    console.log("Same instance");
}

Singletonパターンで設計した方が良さそうさなクラス

  • ロギング
  • キャッシュ管理
  • DB接続ドライバ
haseyuyhaseyuy

Respository

  • オブジェクトのインスタンスを保存したいときは直接的にデータストアに書き込みを行う処理を実行するのではなく、リポジトリにインスタンスの永続化を依頼する
  • また永続化したデータから再構築したいときにもリポジトリにデータの再構築を依頼する
haseyuyhaseyuy

コマンドクエリ分離原則(CQS)

  • 基本的な考えは、オブジェクトのメソッドを明確に二つのカテゴリに分類するもの
    • 問い合わせ:結果を返し、システムの状態を変更しない(副作用がない)
    • コマンド:システムの状態を変更し、値を返さない「ミュテータ(mutators)」