iOS 개발을 하다보면 나도 모르게 여러가지 디자인 패턴을 마주 하게 된다.
이 디자인 패턴이 뭐냐? 축구를 생각해 볼수 있겠다. 상대방 팀 공략을 위한 우리나라 전략을 그때그때 마다 달라진다. 바로 이거다.
개발을 하다보면, 주어진 문제를 어떻게 공략해야하는가에 대한 생각을 하게 된다. 이때 마다 전략을 세워서 해결하게 되는데… 이게 반복적인 문제 해결 전략들이 생긴다. 그래서 이것을 하나의 패턴으로 정의한게 디자인 패턴이라 생각할 수 있겠다.
이러한 디자인 패턴들을 익혀 두면, 나중에 프로그래밍을 할 때 정신적 소모를 줄여주고, 빠른 프로그래밍을 해 줄수 있다.
다음은 iOS 개발에 있어서 자주 사용되는 디자인 패턴들이당
- 델리게이션
- 데이터소스
- MVC(Model-View-Controller)
- Target-Action Pair
위의 패턴들을 조금 더 자세하게 보면….
- 한 학급이 수학여행을 갔을때를 생각해보자… 선생님이 한 학급을 책임지고 있다.. 이때 매번 이동할때 사람들의 인원을 확인해야 한다. 이때 선생님이 인원 확인 및 아픈사람 확인을 반장한테 위임했다. 이렇게 반장에게 위임하듯이, 한 객체는 정해진 의무를 또 다른 객체에 위임하는 것을 델리게이션 패턴이라고 한다. 예를 들어 UITextField에서 텍스트 필드의 내용이 변경된 것을 알리기 위해 델리게이션을 사용했다.
- 위의 수학여행 상황을 한번 더 생각해보자.. 반장에게 인원확인 임무를 줬는데, 이때 인원 확인 임무에서 몇명인지에 데이터를 계속 달라고 부탁했다고 가정해보자. 매번 인원확인할때마다 반장은 선생님에게 전체인원(데이터)를 선생님에게 알려준다. 이렇게 반장에게서 구체적인 데이터를 제공받는 것이 데이터소스의 패턴이라고 할수 있겠다. 데이터 소스는 델리게이트와 유사하지만, 다른 객체에 반응하는 대신에 요청이 오면 다른객체에 데이터를 제공하는 역할을 한다. 데이터 소스 패턴은 테이블 뷰에서 자주 확인 할수 있다. 각 테이블뷰는 테이블 뷰에 표시할 행의 수와 각 인덱스패스에 어느 셀을 표시할지에 대한 책임을 지는 데이터 소스를 가지고 있다.
- 앱에서 보통 각 객체는 다음 세가지 역할중 하나를 수행한다. 모델객체는 데이터이고, 뷰는 사용자 인터페이스를 표시한다. 컨트롤러는 모델과 뷰를 함께 묶는 접착제 역할을 한다
- 특정 이벤트가 발생하면 한 객체는 또 다른 객체의 메서드를 호출한다. 타깃은 호출할 메서들 가진 객체이고, 액션은 호출된 메서드다, 예를 들어 버튼에 타깃-액션 쌍을 사용하는것이 대표적일 것이다. 터치 이벤트가 발생할때 메서는 또다른 객체에서 호출될것이다. (보통 뷰컨트럴러)
애플은 매우 일관성있게 이 디자인 패턴들을 사용한다. 따라서 이를 이해하고 인식하는 것은 중요하다. 이러한 패턴들을 인식하게 되면, 새로운 클래스와 프레이워크를 좀더 쉽게 다르게 알아 갈수가 있다.
글과 그림으로 최대한 쉽게 정리하고자 했지만, 아직 제가 미숙하므로 한계가 있습니다
좋은 비유 혹은 설명을 글 또는 그림으로 피드백 주시는 것은 대환영입니다.