-1
我可以欣賞工廠方法的價值,但我正在努力使用專用工廠類別的價值。工廠類別的價值
這將工作:
class Brady
{
int age;
String name;
static Brady create(String who)
{
if(who.equals("Cindy")) return new Cindy();
if(who.equals("Jan")) return new Jan();
if(who.equals("Marcia")) return new Marcia();
return null;
}
}
class Marcia extends Brady {}
class Cindy extends Brady {}
class Jan extends Brady {}
...
Jan jan = (Jan)Brady.create("Jan");
那麼,有沒有什麼理由使用一個工廠類呢?
class Brady
{
int age;
String name;
}
class Marcia extends Brady {}
class Cindy extends Brady {}
class Jan extends Brady {}
class BradyFactory
{
static Brady create(String who)
{
if(who.equals("Cindy")) return new Cindy();
if(who.equals("Jan")) return new Jan();
if(who.equals("Marcia")) return new Marcia();
return null;
}
}
Jan jan = (Jan)BradyFactory.create("Jan");
這看起來像是浪費了額外的代碼。當需要實例時,我確實瞭解工廠類的有用性:
class BradyFactory
{
Brady brady;
BradyFactory(String who)
{
if(who.equals("Cindy"))
brady = new Cindy();
else if(who.equals("Jan"))
brady = new Jan();
else if(who.equals("Marcia"))
brady = new Marcia();
}
public BradyFactory addChore(Chore chore)
{
brady.addChore(chore);
return this;
}
Brady create()
{
return brady;
}
}
Jan jan = (Jan)new BradyFactory("Jan")
.addChore(Chore.Dishes)
.addChore(Chore.Washing)
.create();
......或者需要工廠的子類時。
所以我的問題是:除了需要工廠實例或工廠子類時,將簡單工廠方法放在專用工廠類中是否有任何價值?
http://stackoverflow.com/questions/69849/factory-pattern-when-to-use-factory-methods – zmf
你確定這是factroy模式?看起來很像建築師模式! – fabian
我的想法正是@fabian!我在爲自己掙扎,忘記了工廠模式!? –