Swift Architecture(14)
-
[Design Pattern] 내가 보려고 정리하는 Swift 디자인 패턴 (3) - 전략 패턴(Strategy Pattern)
1️⃣ 전략 패턴 (Strategy Pattern)이란?전략 패턴(Strategy Pattern)은 특정 상황에서 사용하는 알고리즘을 캡슐화하여 런타임 내에 변경할 수 있게 해주는 디자인 패턴이다.다시 말해, 사용되는 알고리즘을 별도의 클래스에 배치/분리하여 이 알고리즘 객체를 동적으로 교환할 수 있도록 만드는 패턴이다.특정 상황? 알고리즘? 변경? 전략? 이 말들이 나도 처음에 잘 이해가 되지 않았기에 하나의 예시를 가지고 설명해 보겠다.게임 캐릭터를 만드는 개발 업무를 담당하고 있다고 가정해 보자.해당 캐릭터 클래스에는기본적으로 상대를 공격할 수 있는 attack()이라는 메서드가 포함되어 있다.단, 캐릭터가 같은 공격을 하더라도 "공격 전략(Attack Strategy)"은 여러 개를 사용할 수 ..
2024.02.25 -
[Design Pattern] 내가 보려고 정리하는 Swift 디자인 패턴 (2) - Delegate Pattern
1️⃣ Delegate가 등장하게 된 이유 Delegate는 "대리자" "위임하다" 같은 뜻으로 번역되는 단어다. "위임하다"의 의미를 구체적으로 들어가보면, "당사자의 일방이 상대방에 대하여 '사무의 처리'를 위탁하고, 상대방이 이를 승낙함으로써 성립하는 것"이라고 한다. 즉, 쉽게 말해 Delegate는 "너가 나 대신 일 좀 해줘!" 라는 의미를 가지고 있는 단어다. (전문용어로 짬 때린다) "본인 일을 본인이 하면 되지 왜 남한테 떠넘겨?" 라고 할 수도 있지만, 사실 이 Delegate가 필요하게 된 상황을 보게되면 공감이 될 거다. 프랜차이즈 햄버거 가게 사장이 되었다고 예시를 들어보겠다. 불고기 버거와 치킨 버거 두 가지 메뉴만 판매하는 가게에서 햄버거 레시피는 우리 가게 프랜차이즈의 특성을..
2024.02.20 -
[Design Pattern] 내가 보려고 정리하는 Swift 디자인 패턴 (1) - 싱글톤 패턴(Singleton Pattern)
1️⃣ static : 타입 프로퍼티 (Type Property) 개념 정리Swift의 static 키워드는 인스턴스 생성 여부와 상관없이 무조건 1개의 값만 존재하는 프로퍼티를 선언할 때 사용한다.객체 지향 프로그래밍에서 처음 내가 어렵게 느꼈던 부분은 한 행위 또는 내용물에 대해 여러 표현법을 사용한다는 점이었다.그래서 이 글을 읽는 다른 사람들은 과거의 나 같은 어려움을 느끼지 않았으면 하는 마음에서, 용어를 먼저 정리해보고자 한다.인스턴스 = 클래스 혹은 구조체에서 찍어낸 결과물 = 붕어빵 틀에서 만들어진 붕어빵 = 객체 (매우 중요!)생성 = 클래스 혹은 구조체에서 결과물을 찍어냄 = 변수 또는 상수에 클래스/구조체를 기반으로 한 값을 대입함 = 클래스/구조체에서 비롯된 객체가 메모리에 실제로 ..
2024.02.19 -
[Clean Architecture] OOP의 SOLID 원칙을 Swift의 관점에서 이해하기
0️⃣ OOP(Object-Oriented Programming)와 SOLID 원칙"일단 앱잼 기간 중에 빨리 기능부터 구현하고, 우리 앱잼 끝나면 진짜 리팩토링하자!"단기간에 결과물을 내야하는 솝트 동아리 내의 과제, 합동 세미나, 장기 해커톤 앱잼 같은 곳에서 가장 많이 들었고, 가장 많이 해온 말이다.하지만 해당 기능 개발이 끝나면, 또 다른 기능 개발이 개발자들을 기다리고 있고....또 다른 기능 구현을 우선적으로 하다 보면, 코드 정리나 프로젝트의 구조를 개선하는 일은 후순위가 항상 되기 마련이었다.어쩌면 리팩토링은 평생 동안 목표에 그칠 수밖에 없는 "이룰 수 없는 과제"일지도 모르겠다.그래서 나는 여기서 의문을 하나 가지게 되었다."겉으로 보이지 않는 코드의 퀄리티나 프로그램의 구조를 굳이 ..
2024.02.13