iOS 에서 자주 사용 하 는 디자인 모드

3339 단어
분류 하 다.
창설 형 (Creational):
     (Singleton)

구조 형 (Structural):
MVC、      (Decorator)、      (Adapter)、     (Facade)

행동 형 (Behavioral):
      (Observer)、      (Memento)

단일 모드 - 싱글 톤
iOS 에서 단일 모델 은 흔히 볼 수 있 는데 4. 567914., 4. 567914., 4. 567914., 4. 567914. 이런 것들 은 모두 단일 모델 이다.
디자인 모델 의 왕 - MVC
모델 층 (Model):

보기 층 (View):
           ,         ,          UIView     。

컨트롤 러 (컨트롤 러):
            ,           ,             ,      ,         。

또한 모델 - 뷰 - 뷰 모델 (MVVM)
장식 자 모드 - 장식 자
장식 자 모드 는 원 코드 를 수정 하지 않 고 지정 한 클래스 에 행동 과 직책 을 동적 으로 추가 할 수 있 습 니 다.하위 클래스 를 사용 해 야 할 때 장식 자 모드 를 고려 해 보 세 요. 원시 클래스 에 한 층 포장 할 수 있 습 니 다.
Swift 에 서 는 장식 자 모드 를 실현 하 는 두 가지 방법 이 있 습 니 다. 확장 (Extension) 과 의뢰 (Delegation) 입 니 다.
넓히다
확장 은 매우 강력 한 메커니즘 으로 계승 하지 않 고 이미 존재 하 는 클래스, 구조 체 또는 매 거 진 클래스 에 새로운 기능 을 추가 할 수 있다.가장 중요 한 것 은 접근 권한 이 없 는 상태 에서 기 존 클래스 를 확장 할 수 있다 는 것 이다.이 는 UIView 나 UIImage 같은 코코아 종 류 를 확장 할 수 있다 는 뜻 이다.
예 를 들 어 컴 파일 할 때 새로 추가 하 는 방법 은 확장 류 의 정상 적 인 방법 처럼 실 행 될 수 있다.확장 자 는 확장 클래스 의 대상 을 가지 고 있 지 않 기 때문에 장식 기 모드 와 는 조금 다 릅 니 다.
의뢰 하 다.
장식 자 모델 의 또 다른 실현 방안 은 위탁 이다.이런 메커니즘 하에 서 한 대상 은 다른 대상 과 관련 이 있 을 수 있다.예 를 들 어 UITableView 를 사용 하고 있 으 면 tableView (: numberOfRowsInSection:) 라 는 의뢰 방법 을 실현 해 야 합 니 다.
UITable View 가 데이터 가 얼마나 있 는 지 알 기 를 기대 해 서 는 안 됩 니 다. 이것 은 응용 층 이 해결 해 야 할 문제 입 니 다.따라서 데이터 관련 계산 은 UITableView 의뢰 를 통 해 해결 해 야 합 니 다.이렇게 하면 UITableView 와 데이터 층 을 각각 독립 시 킬 수 있다.보기 층 은 데 이 터 를 표시 하 는 것 을 책임 집 니 다. 당신 이 건 네 주 는 대로 표시 하 겠 습 니 다.
어댑터 모드 - 어댑터
어댑터 는 자신 을 봉 한 후 통 일 된 인 터 페 이 스 를 다른 종류 에 노출 시 켜 다른 종류의 인터페이스 가 각각 다 르 더 라 도 서로 무사 하고 함께 일 할 수 있다.
어댑터 모드 에 익숙 하 다 면 애플 이 어댑터 모드 를 실현 하 는 방식 이 조금 다르다 는 것 을 알 게 될 것 이다. 애플 은 의뢰 를 통 해 어댑터 모드 를 실현 했다.다 들 낯 설 지 않 을 거 라 고 믿 어 주세요.예 를 들 어 NSCoying 의 협 의 를 따 랐 다 면 copy 방법 을 반드시 실현 해 야 한다.
외관 모드 - Facade
외관 모델 은 복잡 한 업무 시스템 에서 간단 한 인 터 페 이 스 를 제공 했다.만약 에 업무 의 모든 인 터 페 이 스 를 사용자 에 게 직접 노출 시 키 면 사용 자 는 이 복잡 한 인 터 페 이 스 를 단독으로 직면 해 야 한다. 학습 원가 가 매우 높 고 오용 위험 도 존재 한다.외관 모드 를 사용 하면 필요 한 API 만 노출 하면 됩 니 다.
API 사용자 들 은 이 내부 의 업무 논리 가 얼마나 복잡 한 지 전혀 모른다.우리 가 대량의 유형 을 가지 고 그것들 을 사용 하 는 것 이 매우 복잡 하고 이해 하기 어 려 울 때 외관 모델 은 매우 이상 적 인 선택 이다.
외관 모드 는 사용 과 배후 의 실현 논 리 를 성공 적 으로 결합 시 키 는 동시에 외부 코드 가 내부 작업 에 대한 의존 도 를 낮 추 었 다.만약 밑바닥 의 클래스 가 바 뀌 었 다 면 외관 의 인 터 페 이 스 는 수정 할 필요 가 없다.
예 를 들 어 어느 날 백 스테이지 서 비 스 를 모두 바 꾸 려 면 API 내부 코드 만 수정 하면 외부 에서 API 를 호출 하 는 코드 가 바 뀌 지 않 습 니 다.
관찰자 모드 - Observer
관찰자 모드 에서 한 대상 은 상태 가 변 할 때 다른 대상 에 게 알려 준다.참가 자 들 은 다른 대상 이 무엇 을 하 는 지 알 필요 가 없다. - 결합 도 를 낮 추 는 디자인 이다.이 디자인 모델 은 특정한 속성 이 바 뀔 때 이 속성 에 관심 을 가 지 는 대상 에 게 알려 주 는 데 자주 사용 된다.
흔히 볼 수 있 는 사용 방법 은 관찰자 가 감청 을 등록 하고 상태 가 바 뀌 면 모든 관찰자 가 통 지 를 받는다.
MVC 에서 관찰자 모드 는 Model 대상 과 View 대상 의 교 류 를 허용 해 야 하 며 직접적인 연관 이 있어 서 는 안 된다 는 것 을 의미한다.
코 코 아 는 두 가지 방식 으로 관찰자 모드 인 Notification 과 Key - Value Observing (KVO) 을 실현 했다.
비망록 모드 - Memento
비망록 모드 는 대상 의 내 적 상 태 를 포착 하고 구상 화 시킨다.다시 말 하면 대상 을 어디 에 두 었 다가 나중에 어느 시간 에 다시 회복 시 키 는 것 이다. 그 자체 의 포장 성 을 깨 뜨리 지 않 고 개인 데 이 터 는 여전히 개인 데이터 이다.
압축 파일 - 보관
애플 은 압축 파일 의 방법 을 통 해 비망록 모델 을 실현 한다.그것 은 대상 을 흐름 으로 바 꾸 어 내부 속성 이 노출 되 지 않 은 상태 에서 데 이 터 를 저장 했다.

좋은 웹페이지 즐겨찾기