とある超人のデザインパターン〜Creation Methodによるコンストラクタの置き換え〜
(V)o\o(V): ホッホッホ。
(o|o): 出たな、バル(以下略)!
(V)o\o(V): 分身の術。
(o|o): ふっ、かかったな!
(V)o\o(V): ホ?
(o|o): 先日、オマエのソースコードを手に入れたのだ!
(V)o\o(V): ホッホー。
(o|o): どれが本物かなんて一目瞭然!どれどれ…。
public class Baru { public Baru(){ this.st = 10; this.df = 5; this.hp = 65535; this.effect = false; } public Baru(int hp){ this.st = 10; this.df = 5; this.hp = hp; this.effect = true; } ・ ・ ・
(o|o): むむ…どっちが本物のコンストラクタなのかわからん。どうしよう…。
(V)o\o(V): ホッホッホ。
( ̄(エ) ̄): こんなこともあろうかと、さっきリファクタリングしておいたよ。
(o|o): マジで!あざーっす!どれどれ…
public class Baru { private Baru(int st, int df, int hp, boolean effect){ this.st = st; this.df = df; this.hp = hp; this.effect = effect; } public static Baru createCopy(){ return new Baru(10, 5, 65535, false); } public static Baru createActual(int hp){ return new Baru(10, 5, hp, true); } ・ ・ ・
(o|o): おお、これなら一目瞭然!しかも、同じ引数のコンストラクタを複数定義できるぞ!
(V)o\o(V): ホ、ホホー。
(o|o): というわけで、本物はオマエだー(o|o)_|========
(V)o\o(V): ホホホーーー!!!
(o|o): 悪は滅びた…。さらばジュワッ
◆本日のクレーム◆
監督「なんでこの怪獣だけnewできないんだ!」
■参考
パターン指向リファクタリング入門
http://ec.nikkeibp.co.jp/item/books/P82380.html