キックオフ-オリエンテーションにはいわゆる"クラスのクラスター"をObjective-C?
-
12-09-2019 - |
質問
ってそれを読んでいたんNSArrayはどうやればいいのでしょうかいことです。音す。私は7本当に脂肪図書このマスクーター/モーペットレンタルObjective-CコC.なにしろクラスのクラスターされており、少なくとも思っているようで、インデックスの奥ます。ではどうだ?
解決
<...アップルのドキュメントから/>。要するに、それはそれはにObjC本に言及していない理由は、おそらくですFoundationフレームワークで使用されるデザインパターンです。
クラスクラスタは、そのグループ、パブリック、抽象スーパークラスの下で民間、具象サブクラスの数をアーキテクチャです。このように、クラスのグループのみが公開さアーキテクチャを見たユーザに簡略化されたインターフェースを提供する。
他のヒント
どうなるかはわからないが、CDPアから参照できると思いますが、基本的にはObjective-Cクラスクラスターが構築支援の実施概要 工場 パターンです。
の 考え 簡単:きせていただきたいと考え工場(クラスター)インターフェイスは、最小の説明、製造を返します特定のコンクリートのインスタンスは工場オブジェクトに満足の行動のクラスター家族の工場(クラスター)インターフェース。
簡単なコンクリートの例:この例を提供笑工場を生成するコンクリートの授業の特定の笑いの種類(例:Guffaw,笑).に注意を払う 笑initWithLaughter: 方法。
です。h:
#define kLaughWithGuffaw 1
#define kLaughWithGiggle 2
@interface Laugh: NSObject {}
- (Laugh *) initWithLaughter:(NSUInteger) laughterType;
- (void) laugh;
@end
です。m:
@interface Guffaws:Laugh {}
- (void) laugh;
@end
@interface Giggles:Laugh {}
- (void) laugh;
@end
@implementation Laugh
- (Laugh *) initWithLaughter:(NSUInteger) laugherType {
id instanceReturn=nil;
; // Removed for ARC [self release]
if ( laughterType == kLaughWithGuffaw )
instanceReturn = [[Guffaws alloc]init];
else if( laughterType == kLaughWithGiggle )
instanceReturn = [[Giggles alloc]init];
else
; // deal with this
return instanceReturn;
}
- (void) laugh {
NSLog(@"Humbug");
}
@end
@implementation Guffaws
- (void) laugh {
NSLog(@"OH HA HA HOWAH HA HA HA");
}
@end
@implementation Giggles
- (void) laugh {
NSLog(@"Tee hee");
}
@end
用語集のページ498のスティーブンKochanによる客観Cでのプログラミングから、クラスタます:
そのグループのセット抽象クラス 提供するプライベート具象サブクラス、 ユーザに簡略化されたインターフェース 抽象クラスを通じてます。
クラスのクラスターを単一の公開インターフェースグループのコンクリート、民間のサブクラスの実装方法です。目的-cプログラマ用クラスのクラスターがほとんどを実現し、これは全てのクラスのクラスタークラスのクラスターの仕事は非表示にする複雑さの実装の詳細後の公的インタフェース。
多くの授業のクラスのクラスターなどのNSString,NSArray,NSDictionary、NSNumber.をご利用いただきます [NSString stringWithFormat:]
クラスのクラスターはお一部のコンクリートを実装するクラス NSString
インタフェース。でき NSConcreteString
, NSCFString
, NSFooBarString
, など。のクラスのクラスターでは、コンストラクタは初期化子ま呼び出しの引数になります。
このため、クラスのクラスター最強の概念Objective-Cプログラミング
- 非常に容易にします
- を変えるのも簡単では基本となる実装を変えずにコードを呼び出す
- や提供の異なるコンクリート実装は実行時(試験や模擬オブジェクト)
- その上、試験、refactor
多くの場合その他の言語でのみなさんの暴。クラスのクラスターについて双方の要素の概要工場のファサードパターン
アップルのコンサルティングカバーにクラスのクラスターや実装方法に拡張しかくことがわかった。残念ながら、思った多くのiOS開発者は、ココア-特定のパターンは死角があります。
にNSArrayクラスクラスタは、それはあなたのコードが知っているか、特定の実装を気にすることなく使用する配列クラスの実装の任意の数の方法だ、「ヘビー級」ではありません。フードの下で、そのようなコンパイル時に知られている要素の特定の数を含む大きな、スパースアレイ、またはアレイなどの異なるユースケースに適しているにNSArrayの具象サブクラスがある。
にNSArray、NSStringの、とのNSNumberはあなたが最も頻繁に遭遇するだろうクラスクラスタはあります。