Dartクラスまとめ

いつもクラス定義の仕方を忘れてしまうので、よく使うパターンだけを備忘録として残してみました。

通常クラス

class Human {
  /// フィールド
  String _name = '';     // プライベートフィールド
  int age = 0;        // パブリックフィールド

  final string defaultName = 'Sample';  // 定数
  final int defaultAge = 10;

  /// セッター・ゲッター
  set name(String value) {
    this._name = value;
  }
  String get name => this._name;

  /// コンストラクタ
  Human(String name, int age) {
    this._name = name;
    this.age = age;
  }

  /// コンストラクタのオーバーロード
  Human.defaultName(int age) {
    this._name = 'Default';
    this.age = age;
  }

  /// プライベートメソッド
  String _getNameAndAge() {
    return 'name:' + this._name + ', age:' + this.age.toString();
  }

  /// パブリックメソッド
  void addAge(int age) {
    this.age = this.age + age;
  }
}
  • フィールド定義
    • プライベートフィールドはアンダースコアつき
    • パブリックフィールドはアンダースコアなし
  • コンストラクタ
    • 通常はクラス名と同じ名前で定義
    • 「クラス名.オーバーロード名」は名前付きコンストラクタとも呼ばれているもので、パラメーターの違うコンストラクタの定義が可能なものです
  • セッター・ゲッター
    • セッターは「set xxxx(型 value)」で定義
    • ゲッターは「型 get xxx」で定義
  • メソッド
    • プライベートメソッドはアンダースコアつき
    • パブリックメソッドはアンダースコアなし

シングルトンクラス

class Sample {
  /// プライベートコンストラクタ
  Sample._() {}

  /// シングルトンインスタンス
  static final Sample _instance = Sample._();

  /// ファクトリメソッド
  factory Sample() => _instance;
 
  /// メソッドは普通に定義
  void testMethod {
    :
  }
}
  • 「_()」はプライベートコンストラクタと呼ばれ、1回だけ呼ばれるものです
  • 制的フィールド_instanceに1回だけ呼ばれるプライベートコンストラクタを呼び出し、以降はファクトリメソッドから常に生成済のインスタンスを返すことでシングルトンパターンを実現しています