單例,單例模式
#import <Foundation/Foundation.h>/** * 單例, 是iOS中常用的設計模式 也就是該類只有一個執行個體. 使用情境:既可以從前往後傳,也可以從後往前傳. *//** * 以main , default. standard,shared */@interface Singleton : NSObject+ (Singleton *)sharedSingleton;@property (nonatomic, retain) NSString *textFiledText; //儲存第一個介面中輸入框中輸入的文字@property (nonatomic, retain) NSString *secondTextFiledText; //儲存第二個介面中輸入的文字@end@implementation Singleton//聲明為靜態變數,只初始化一次,並且在程式的運行期間空間不會釋放.//對於單例來說,要保證程式的運行期間該對象的空間都不會回收,所以單例會造成記憶體佔用問題.空間得不到及時回收.static Singleton *singleton = nil;+ (Singleton *)sharedSingleton{ //內部建立對象只需要一次 if (singleton == nil) { singleton = [[Singleton alloc] init]; } return singleton;}@end
JAVA單例模式有什?
等等 單例模式的倆種方式:
餓漢式
class Singleton {
private static Singleton instance=new Singleton();
private Singleton(){}
static Singleton getInstance() {
return instance;
}
}
懶漢式
class Singleton {
private static Singleton instance=null;
private Singleton(){}
static Singleton getInstance() {
if(instance==null)
instance=new Singleton();
return instance;
}
}
C++單例模式
1、構造方法私人
那麼,就意味著,只能在Singleton的成員函數中,才能調用Singleton的建構函式來建立執行個體。在Singleton之外,不能建立Singleton對象的執行個體。
2、代碼中,定義了GetInstance方法,只能通過GetInstance方法來擷取Singleton對象的執行個體,單例就是在GetInstance方法中控制的。
首先,Singleton有一個
static Singleton* instance;//惟一執行個體
Singleton* Singleton::instance=NULL;
在這裡初始化為NULL。
Singleton* Singleton::GetInstance()
{
if(instance == NULL)
{
instance = new Singleton();
}
return instance;
}
上面的函數,就是通過instance來實現單例的。
當第一次調用GetInstance時,instance 為NULL,所以會執行
instance = new Singleton();
把這個建立的執行個體儲存到靜態成員instance,並返回這個指標。
第二次到第N次調用GetInstance時,由於instance不為空白,所以會直接返回instance 。也就是第一次調用GetInstance建立的那個執行個體。
所以這樣就實現了,單一實例。
意思就是說,Singleton對象的執行個體,只會被建立一次,就是說記憶體中,只存在一個Singleton的執行個體,就是所謂,單一實例。