java version 1.7.0_65
我有一个单例设计模式类。这将始终返回最初创建的同一个实例。当包含的类是单例模式时使用组合创建多个对象
但是,我的问题是这个类需要从另一个类创建许多其他对象。我已经为此使用了作文(POI
课程的实例ArlabFacade
)。从这个单例实例中,客户端应该能够创建许多POI对象。我不想公开POI类的内部工作,所有事情都必须通过单例实例。
private static ArlabFacade mArlabFacade = null;
private POI mPoi; /* Should be able to create many object of this class */
private ArlabFacade(Context context) {
/* initialize properties */
mContext = context;
mPoi = null;
}
public static ArlabFacade getInstance(Context context) {
/* Create a synchronised singleton instance */
ReentrantLock lock = new ReentrantLock();
lock.lock();
if(mArlabFacade == null) {
mArlabFacade = new ArlabFacade(context);
}
lock.unlock();
return mArlabFacade;
}
我试过做这样的事情,但它有2个问题。
1) I don't want to return the class instance of POI
2) because I only have a single instance the mPoi will be overwritten by the next client call to this function.
此功能将只覆盖:
public POI createNewPOI() {
return mPoi = new POI();
}
是否有任何的设计模式,解决这个问题呢?
不知道如果我理解正确,但不是有一个实例的方式与POI工作变量'POI'类型的'mPoi',你可以有一个'ArrayList',每当'createNewPoi()'被调用时,你可以创建一个新的实例,将它添加到'ArrayList'中,然后返回新的实例。这将保留旧的对象,但正如我所说我可能误解了。 –
karakusc
2014-09-19 05:21:18
@karakusc,基本上。 arlabFacade是一个具有应用程序生命周期的单一实例。并且可以根据需要创建尽可能多的POI对象。但我真的不想公开POI课程。我希望我明白这一点。 – ant2009 2014-09-21 07:48:37
每个POI对象有什么区别?为什么你不能为每个POI使用独特的ArlabFacade? – dieend 2014-09-22 03:11:01