第二回です。
本日のパターンはずばり・・・
Factory Method !!
【要するに】
クラスをインスタンス化して返すメソッドということです
【使いどころ】
あるクラスと一緒に使ってほしいクラスがあるとき
【詳細】
ここに丈助クラスと康一クラスがあります。
丈助クラスはクレイジーダイヤモンドクラスと
康一クラスはエコーズクラスと一緒に使ってほしいとします。
このときに
丈助クラスにcreateクレイジーダイヤモンドメソッドを持たせます
同様に
康一クラスにcreateエコーズメソッドを持たせます
こうすることで一緒に使ってほしいクラスを生成しやすくなります。
が! が! が!
これではスタンド名がわからないとメソッド名がわからないことになってしまします。
これはまずいです。
対処法を説明します。
クレイジーダイヤモンドクラスやエコーズクラスの親クラスとしてスタンドクラスを定義します。
丈助クラスと康一クラスの親クラスとしてスタンド使いクラスを定義します。
スタンド使いクラスにはcreateスタンドメソッドを定義します。
createスタンドメソッドは戻り値としてスタンドクラスを返します。
スタンド使いクラスにはcreateスタンドメソッドが定義されているので
スタンド使いにしたい人にはスタンド使いクラスを継承させればよいということになります。
その上で次に継承したスタンド使いクラスのcreateスタンドメソッドを
丈助クラスや康一クラスでオーバーライドし
クレイジーダイヤモンドクラスやエコーズクラスのオブジェクトを返します。
そうすることによって
スタンドを呼びたい場合にはスタンド使いのcreateスタンドメソッドを呼べば
対象のスタンドのオブジェクトが返ってくる様になります。
ちょっとクラス構造が複雑になりますが
非常に便利なパターンだと思います。
今日はJOJOネタでお送りしました。
本日のパターンはずばり・・・
Factory Method !!
【要するに】
クラスをインスタンス化して返すメソッドということです
【使いどころ】
あるクラスと一緒に使ってほしいクラスがあるとき
【詳細】
ここに丈助クラスと康一クラスがあります。
丈助クラスはクレイジーダイヤモンドクラスと
康一クラスはエコーズクラスと一緒に使ってほしいとします。
このときに
丈助クラスにcreateクレイジーダイヤモンドメソッドを持たせます
同様に
康一クラスにcreateエコーズメソッドを持たせます
こうすることで一緒に使ってほしいクラスを生成しやすくなります。
が! が! が!
これではスタンド名がわからないとメソッド名がわからないことになってしまします。
これはまずいです。
対処法を説明します。
クレイジーダイヤモンドクラスやエコーズクラスの親クラスとしてスタンドクラスを定義します。
丈助クラスと康一クラスの親クラスとしてスタンド使いクラスを定義します。
スタンド使いクラスにはcreateスタンドメソッドを定義します。
createスタンドメソッドは戻り値としてスタンドクラスを返します。
スタンド使いクラスにはcreateスタンドメソッドが定義されているので
スタンド使いにしたい人にはスタンド使いクラスを継承させればよいということになります。
その上で次に継承したスタンド使いクラスのcreateスタンドメソッドを
丈助クラスや康一クラスでオーバーライドし
クレイジーダイヤモンドクラスやエコーズクラスのオブジェクトを返します。
そうすることによって
スタンドを呼びたい場合にはスタンド使いのcreateスタンドメソッドを呼べば
対象のスタンドのオブジェクトが返ってくる様になります。
ちょっとクラス構造が複雑になりますが
非常に便利なパターンだと思います。
今日はJOJOネタでお送りしました。