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