iOS 에서 흔히 볼 수 있 는 디자인 모드
1. 공장 방법 모델 (공장 방법)
구체 적 인 종 류 를 지정 하지 않 고 일련의 관련 또는 상호 의존 대상 을 만 드 는 인 터 페 이 스 를 제공 합 니 다.
+(instancetype)buttonWithType:(UIButtonType)buttonType; [NSNumber numberWithBool:YES] [NSNumber numberWithInt:1]
2. 향원 모드 (Flyweight)
공유 기술 을 활용 하여 대량의 입자 도 대상 을 효과적으로 지원 하고 같은 대상 의 대량 생 성 을 감소 시 켜 메모리 사용량 을 줄 이 고 프로젝트 의 유창 도 를 높 인 다.
UITableView Cell 의 재 활용
참조 링크:
https://www.jianshu.com/p/f9c53b9825e4
3. 교체 기 모드 (Iterator)
집합 대상 의 각 요 소 를 순서대로 방문 하고 그 대상 의 내부 표 시 를 드 러 내지 않 는 방법 을 제공 합 니 다.
iOS 의 Block 교체, 배열 교 체 는 모두 교체 기 모델 의 전형 적 인 실현 이다.
다음은 시스템 자체 의 교체 기 모델 이다.
NSArray *array = @[@1,@2,@3];
NSEnumerator *enumerator = [array objectEnumerator];
NSNumber *number;
while (number = [enumerator nextObject]) {
/**
* do something
*/
}
별 종
NSArray *array = @[@"123",@"456",@"789"];
[array enumerateObjectsUsingBlock:^(id _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
if ([obj localizedCaseInsensitiveCompare:@"789"]) {
*stop = YES;
}
}];
4. 단일 모드 (Singleton)
하나의 인 스 턴 스 만 있 고 전체 방문 점 을 제공 합 니 다.
iOS 의 UIApplication Delegate 는 단일 열 모드 의 실현 이다.
5. 관찰자 모드 (Observer)
한 쌍 의 다 중 의존 관 계 를 정의 하여 여러 관찰자 대상 이 특정한 주제 대상 을 동시에 감청 하도록 한다.이 테마 대상 은 상태 가 변 할 때 모든 관찰자 대상 에 게 자동 으로 자신 을 업데이트 할 수 있 도록 알려 줍 니 다.
iOS 의 KVO, NSNotication 은 모두 관찰자 모드 다.
6. 직책 체인 모델 (책임 체인)
여러 대상 이 요청 을 처리 할 수 있 도록 요청 한 발송 자 와 수신 자 간 의 결합 관 계 를 피한다.이 대상 을 하나의 체인 으로 연결 하고 이 체인 을 따라 이 요 구 를 전달 하 며 한 대상 이 처리 할 때 까지 합 니 다.
iOS 이벤트 의 전달 과 응답 은 바로 직책 체인 모델 의 실현 이다.
7. 비망록 모드 (Memento)
패 키 징 성 을 파괴 하지 않 는 전제 에서 대상 의 내부 상 태 를 포착 하고 이 대상 외 에 이 상 태 를 저장 합 니 다.이렇게 하면 이 대상 을 원래 저 장 된 상태 로 복원 할 수 있다.
https://www.jianshu.com/p/bbcbcc7ea749
iOS 대상 압축 파일.
8. 원형 모드 (Prototype)
프로 토 타 입 인 스 턴 스 로 생 성 대상 의 종 류 를 지정 하고 이 프로 토 타 입 을 복사 하여 새로운 대상 을 만 듭 니 다.원형 모델 은 매우 간단 한 디자인 모델 로 대부분 상황 에서 심 한 복제 행위 로 이해 할 수 있다.Objective - C 에서 원형 모드 를 사용 하려 면 먼저 NSCopying 프로 토 콜 (OC 의 일부 내 장 된 클래스 는 이 프로 토 콜, 예 를 들 어 NSArray, NSMutableArray 등) 을 따라 야 합 니 다.그리고 KVO 의 실현 원리 도 원형 모델 이다.
작성 자: Soaring Heart 링크:https://www.jianshu.com/p/b7bc8c842cc2 출처: 약서 저작권 은 작가 소유.상업 전 재 는 작가 에 게 연락 하여 권한 을 수 여 받 으 십시오. 비 상업 전 재 는 출처 를 밝 혀 주 십시오.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.