とある超人のデザインパターン〜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