Open1

factory

よよよよよよ

factory

-ファクトリーコンストラクタとは
・通常のコンストラクタとは異なり、毎回新しいインスタンスを作るとは限らない柔軟なコンストラクタ。
主に、インスタンスの再利用や条件分岐、パース処理に使われる。

class User {
  final String name;
  static final Map<String, User> _cache = {};//static	クラス全体で共通の変数(インスタンスごとに別ではない)//inal	変数自体の再代入は不可(ただし中身は変更OK)//Map<String, User>	文字列キー(例: 名前)と、それに対応するUserインスタンスのペア//_cache	クラス内専用のプライベートなキャッシュ変数(_で外部からアクセス不可)

  User._(this.name);//  User._←プライベートなクンストラクタ

  factory User(String name) {
    return _cache.putIfAbsent(name, () => User._(name));
  }
}

putIfAbsentとは

Mapのメソッド
指定キーがなければ新しく追加し、その値を返す
既にあれば何もせず、既存の値を返す

map.putIfAbsent('key', () => value);

APIレスポンスなどのデータ変換処理
例:User.fromJson(Map<String, dynamic> json)
インスタンスの再利用(メモリ節約)
キャッシュ処理に最適

条件によって生成インスタンスを変えたい時
例:タイプに応じてDog()やCat()を返す

//あとで