디자인 모델 - 중개 모델 (연근 분해)
원리: 하나의 중개 대상 으로 일련의 대상 의 상호작용 을 밀봉 하고 중개 자 는 각 대상 이 표시 할 필요 가 없 는 상호 인용 을 하여 결합 도 를 낮 출 수 있 으 며 그들 간 의 상호작용 을 독립 적 으로 바 꿀 수 있다 (그물 모양 구 조 를 선형 구조 로 전환 시 켜 결합 을 감소).
해결 문제:
사용 방법:
——
;
, ;
1. 의뢰 인 이 협의 (부류) 를 정한다.
.h
#import
@class AbstructCollege;
@protocol CollegeDelegate
@optional//
- (void)collegeEvent:(AbstructCollege *)college;
@end
@interface AbstructCollege : NSObject
@property (nonatomic,weak) id delegate;
@end
.m
#import "AbstructCollege.h"
@implementation AbstructCollege
@end
2. 중개 기 (부류)
.h
//
#import
#import "AbstructCollege.h"
@interface AbstructMediort : NSObject
@end
.m
//
#import "AbstructMediort.h"
@implementation AbstructMediort
- (void)collegeEvent:(AbstructCollege *)college {
}
@end
3. 의뢰 방 류 대상
.h
#import
#import "AbstructCollege.h"
@interface College : AbstructCollege
@property (nonatomic,assign) CGFloat value;
- (void)changeValue:(CGFloat)value;
@end
.m
#import "College.h"
@implementation College
- (void)changeValue:(CGFloat)value {
self.value = value;
if (self.delegate && [self.delegate respondsToSelector:@selector(collegeEvent:)]){
[self.delegate collegeEvent:self];
}
}
@end
4. 중개 기 하위 클래스 1 (규칙 이 바 뀌 면 해당 하 는 하위 클래스 중개 기 를 만 들 수 있 습 니 다)
.h
#import "AbstructMediort.h"
#import "College.h"
@interface TypeOneMediator : AbstructMediort
@property (nonatomic,strong) College *colleagueA;
@property (nonatomic,strong) College *colleagueB;
@property (nonatomic,strong) College *colleagueC;
- (NSDictionary *)values;//
@end
.m
#import "TypeOneMediator.h"
@implementation TypeOneMediator
- (void)collegeEvent:(AbstructCollege *)college {
if ([college isEqual:self.colleagueA]) {
self.colleagueB.value = self.colleagueA.value * 2;
self.colleagueC.value = self.colleagueA.value * 4;
} else if ([college isEqual:self.colleagueB]) {
self.colleagueA.value = self.colleagueB.value / 2;
self.colleagueC.value = self.colleagueB.value * 2;
} else {
self.colleagueA.value = self.colleagueC.value / 4;
self.colleagueB.value = self.colleagueC.value / 2;
}
}
- (NSDictionary *)values {
return @{@"A":@(self.colleagueA.value),
@"B":@(self.colleagueB.value),
@"C":@(self.colleagueC.value),
};
}
5. 호출 시 대상 간 의 복잡 한 논리 적 판단 을 처리 하지 않 고 중개 기 에 직접 맡긴다.
self.typeOne = [[TypeTwoMediator alloc] init];
College *colleagueA = [[College alloc] init];
College *colleagueB = [[College alloc] init];
College *colleagueC = [[College alloc] init];
self.typeOne.colleagueA = colleagueA;
self.typeOne.colleagueB = colleagueB;
self.typeOne.colleagueC = colleagueC;
colleagueA.delegate = self.typeOne;
colleagueB.delegate = self.typeOne;
colleagueC.delegate = self.typeOne;
[colleagueA changeValue:4];
NSLog(@"%@",self.typeOne.values);
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
디자인 모델 - 중개 모델 (연근 분해)디자인 모드 - 중개 모드 원리: 하나의 중개 대상 으로 일련의 대상 의 상호작용 을 밀봉 하고 중개 자 는 각 대상 이 표시 할 필요 가 없 는 상호 인용 을 하여 결합 도 를 낮 출 수 있 으 며 그들 간 의 상...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.