【发布时间】:2014-11-15 23:20:45
【问题描述】:
我想实现一个抽象工厂的例子,但是具体工厂必须作为单例。
这里举Banas先生的例子:http://www.newthinktank.com/2012/09/abstract-factory-design-pattern/我应该修改UFONemyShipFactory和UFOBossEnemyShipFactory吧?
我为 UFOEnemyShipFactory 尝试了一些东西,但我不确定是否正确:
public class UFOEnemyShipFactory implements EnemyShipFactory{
private UFOEnemyShipFactory(){};
private static UFOEnemyShipFactory firstInstance = null;
public static UFOEnemyShipFactory getInstance(){
if(firstInstance == null){
synchronized(UFOEnemyShipFactory.class){
if(firstInstance == null){
firstInstance = new UFOEnemyShipFactory();
}
}
}
return firstInstance;
}
public ESWeapon addESGun(){
return new ESUFOGun();
}
public ESEngine addESEingine() {
return new ESUFOEngine();
}
这似乎有点奇怪,我认为我没有在正确的类中应用所需的修改。如果我完全错了,请给我一个简短的解释(为什么我错了,我必须修改哪个类以及为什么?)
提前致谢。
【问题讨论】:
-
如果你真的想要一个单例,为什么不使用
enum? Java 语言完成了所有繁重的工作。当然,关于单例是否好存在很多争议。 embeddedrelated.com/showarticle/691.php
标签: java design-patterns singleton factory-pattern