factory/abstract factory
factory/abstract factory
Summer498.icon
Factory とか Abstract Factory ってなんだ?
普通の constructor は instance を生成する factory ではないのか?
多分失敗ネーム
document.createElement("div")
これがファクトリメソッドの好例
渡す文字列によって得られるインスタンスが変わる
プロトタイプパターンでもある
constructor に代わるインスタンス生成メソッド
オレも無意識に factory を作ってると思うんだよなー
振り返ると作ってる
処理を全部 abstract class に押し込んで、sub class の記述は constructor(...args:HOGE){super("hoge-class",...args:HOGE)} だけ
factory を sub class の constructor でラップしている
23のデザインパターン(GoFのデザインパターン)でいうところのAbstract Factoryパターンは、今風に言うとDIコンテナに近いのではないかと思っています。mgn901.icon Abstract Factoryは、オブジェクトを生成するメソッドの複数を、1つのオブジェクトにまとめる。
DIコンテナは、複数の依存を1つのDIコンテナにまとめる。
GoF本のFactory Methodパターンは「オブジェクトをつくる関数」以上の意味合いを持っている。mgn901.icon
https://gyazo.com/2e8abbb9cc0543d9aeb415105cd91c26
Creatorは、anOperation()の中でthis.factoryMethod()を呼び出すことで、factoryMethod()の使い方を規定している。factoryMedthod()の実装はしていない。
factoryMethod()を実装しているのはConcreteCreator。
大雑把な処理の流れは抽象・基底クラス側で決めて、各処理で具体的に何をするのかは具象・派生クラス側で決めている。