본문 바로가기

IOS/Swift

[Swift] 함수의 재사용성을 높이기 위한 Protocol 도입 및 모델 추상화

Market Model과 MyNote Model이 분리되면서 생겼던 문제와 해결들

기존에는 마켓에 올라가는 노트와 마이 노트를 같은 모델로 사용했지만 앱의 볼륨이 커지면서 각각의 컬렉션마다 필요한 필드들이 조금씩 더 추가되거나 달라지기 시작했습니다.

따라서 우리 앱은 마켓에 쓰이는 모델과 마이노트에 쓰이는 모델을 분리했고, 해당 과정에서 몇몇 메서드들의 재사용성이 좋지 않아지는 문제가 발생했습니다.

즉, 각각 모델에 맞는 함수를 따로따로 만들어줘야 하는 문제가 발생했습니다.

이를 해결하기 위해 마켓 모델과 마이 노트 모델이 공통으로 갖고 있는 속성들을 한 곳에 모아 NoteProtocol을 만들어주었고, 두 모델을 ‘추상화’ 시켰습니다.

결과적으로, 두 가지 모델 타입을 모두 받을 수 있는 메서드를 만들 수 있었고, 이런 함수들은 불필요한 메서드 추가를 막고 해당 함수의 재사용성을 높였습니다.

MarketNote와 MyNote 모두 갖고 있는 속성을 한 곳에 모아 프로토콜로 추상화 작업

 

NoteProtocol을 채택하게 함
마찬가지로 NoteProtocol을 채택하게 함
MarketNote와 MyNote 둘 다 받을 수 있는 메서드