シングルトンというデザインパターン
シングルトンというのを教わったので、まとめておきます!
詳しいことはggrksなんですがw
http://ja.wikipedia.org/wiki/Singleton_パターン
どの言語にも共通して存在するデザインパターンらしいです。
理解した範囲でまとめると、
*インスタンスが一つしか作れないクラスを生成する
*インスタンスが一つしか作れないので、値を保持でき、違うクラスの間の値の橋渡しができる
*どのクラスからも呼び出せる
記述的にまちがっているかもしれませんが、多分こんな感じ…!多分
今はobjective-cをやっているので、
objective-cのシングルトンクラスの作り方です
.h #import <Foundation/Foundation.h> @interface xxx : NSObject { } +(xxx*)sharedManager; @end
.m #import "xxx.h" @implementation xxx static xxx * sharedObj = nil; //たった一つのインスタンス +(xxx*)sharedManager { @synchronized(self) { if( sharedObj == nil ) { sharedObj = [[self alloc] init]; } } return sharedObj; } +(id)allocWithZone:(NSZone *)zone { @synchronized(self){ if( sharedObj == nil ) { sharedObj = [super allocWithZone:zone]; return sharedObj; } } return nil; } - (id)copyWithZone:(NSZone*)zone { return self; // シングルトン状態を保持するため何もせず self を返す } - (id)retain { return self; // シングルトン状態を保持するため何もせず self を返す } - (unsigned)retainCount { return UINT_MAX; // 解放できないインスタンスを表すため unsigned int 値の最大値 UINT_MAX を返す } - (void)release { // シングルトン状態を保持するため何もしない } - (id)autorelease { return self; // シングルトン状態を保持するため何もせず self を返す } @end
シングルトンを使う
[[xxx sharedManager] (自分で定義したメソッド)];
今度javaも調べてみよう…。