0
を保持します。あなたが見ることができる何は、私は3つのクラスを有するサイクルと弱性
Core.m
-(id)init {
self = [super init];
MyCache *cache = [[MyCache alloc] initWithCore:self];
self.httpClient = [[MyHttpClient alloc] initWithCache:cache];
}
Cache.m
@interface MyCache()
@property (nonatomic, strong) MyHttpClient *httpClient;
@end
@interface Core()
@property (nonatomic, strong) MyHttpClient *httpClient;
@end
@implementation MyCache
-(instancetype) initWithCore: (Core *)core
{
if (self = [self init]) {
self.httpClient = core.httpClient;
}
return self;
}
@end
-(void)foo
{
[self.httpClient doSomething];
}
MyHttpClient.m
@interface MyHttpClient : NSObject
@property (nonatomic, strong) MyCache *cache;
-(instancetype) initWithCache: (MyCache *)cache;
@end
@implementation MyHttpClient
-(instancetype) initWithCache: (MyCache *)cache
{
if (self = [self init]) {
self.cache = cache;
}
return self;
}
-(void) doSomething
{
[self.cache cacheSomething];
}
、MyCache
はMyHttpClient
インスタンスを依存性注入によって使用し、一方でMyHttpClient
インスタンスはMyCache
インスタンスを使用します。
これはという周期を保持していますか?
は私が弱いするMyCache
またはMyHttpClient
プロパティを設定する必要がありますか?あなたは、簡単な図にロジックを入れた場合
感謝、
なぜキャッシュにhttpクライアントが必要なのですか?私は本当の問題はあなたが正しく懸念を分離していないことだと考えています... – Sulthan
@Sulthan Cacheは、HttpClientを通してサーバーに送信する必要のあるオブジェクトのリストを持っています。 Httpclientでは、送信が完了すると、リストに格納されたオブジェクトをクリアするためにキャッシュを呼び出します。 – snaggs
これはまさに私が話していることです。キャッシュはアイテムを単独で送信すべきではありません。あなたの他のクラスの1人は、アイテムのために 'Cache'を要求し、それらを送るべきです。 – Sulthan