0️⃣

[読書メモ]オブジェクト設計スタイルガイド 1章6~9節 with TypeScript

2024/01/30に公開

初めに

オブジェクト設計スタイルガイドを読みながら、TypeScriptでやるならどうやるかを考えながら書きました。
要約的に読める内容になっていると思うので、サクッと3分ぐらいで読める記事となっています。
https://www.oreilly.co.jp/books/9784814400331/

1.6 ポリモフィズム

ポリモフィズム(多態性):ある引数の型があるクラスである場合、そのクラスのインスタンスであれば、どんなオブジェクトでも有効な引数として渡せる。つまり、以下だと「bの引数の型がAクラスなので、Aクラスのインスタンスであれば、どんなオブジェクトでも有効な引数として渡せる」ということ

class A {
  a() {
    return "Aクラスだ";
  }
}

class B {
  b(a: A) {
    console.log(a.a());
  }
}

const a1 = new A();
const a2 = new A();
const b1 = new B();
// bの引数には、Aのインスタンスだったら何を渡してもok
b1.b(a1);
b1.b(a2);

大抵の場合は、
× サブクラスを使ってオブジェクトの振る舞いを変える
○ 引数にインターフェースを指定して、ポリモフィズムを使うのが良い
(9章で詳細)

1.7 コンポジション

オブジェクトコンポジション:あるオブジェクトを他のオブジェクトのプロパティに代入すること

class A {}

class C {
  a: A; // オブジェクトコンポジション
  constructor(a: A) {
    this.a = a;
  }
}

1.8 クラスの整理

特になし

1.9 Return分と例外

returnや例外を投げるなどして、メソッドの途中で処理を中断する。
try-catchなどで例外を捕捉するなども可能。

Discussion