Swift 30

[Design Pattern] Composite Pattern (컴포지트패턴) with Swift

Composite Pattern 개요 Object의 Hierarchies를 표현하고 각각의 Object를 독립적으로 동일한 인터페이스를 통해 처리할 수 있게 한다. 컴포지트 패턴은 클라이언트가 복합 객체(group of object) 나 단일 객체를 동일하게 취급하는 것을 목적으로 한다. 여기서 컴포지트의 의도는 트리 구조로 작성하여, 전체-부분(whole-part) 관계를 표현하는 것이다. 실제 상황에서 생각해보기 언제 사용하는가? 복합 객체와 단일 객체의 처리 방법이 다르지 않을 경우, 전체-부분 관계로 정의할 수 있다. 전체-부분 관계의 대표적인 예는 Directory-File이 존재한다. 이러한 전체-부분 관계를 효율적으로 정의할 때 유용하다. 코드로 확인해보기 import XCTest proto..

💌 Design Pattern 2022.02.24

[Design Pattern] Strategy Pattern (스트레티지패턴) with Swift

Strategy Pattern 개요 Strategy는 어떤 동작을 하는 로직을 정의하고 이것들을 하나로 묶어 (캡슐화) 관리하는 패턴 새로운 로직을 추가하거나 변경할 때 한번에 효율적으로 변경이 가능하다. 실제 상황에서 생각해보기 스트레티지 패턴은 다양한 방식으로 특정 작업을 수행하는 클래스를 선택하고 이런 모든 알고리즘을 Strategy 라는 별도의 클래스로 추출할 것을 제안한다. 예를 들어, 여행자를 위한 네비게이션 앱을 만든다고 가정해보자. 앱의 첫번째 기능은 도로 위의 경로만 보여주는 기능이었다. 그러나 다음 업데이트에 도보 경로 옵션을 추가해야 하는 상황이 되었다면? 그리고 다음 업데이트에 대중교통 경로까지 추가해야하는 상황이라면? 게다가 또 자전거 도로까지 추가해야 한다면?!! (으악 복잡해!..

💌 Design Pattern 2022.02.23

[Design Pattern] Observer Pattern (옵저버패턴) with Swift

안녕하세요! 조이임다! 저희 회사는 코로나로 인해서 원래도 상시 재택을 했지만 더 많이 재택근무를 하게 되었어요ㅠ_ㅠ 3차 접종까지 마쳤음에도 혹시나 걸릴까봐 저도 이번주는 오늘 빼고는 다 재택이랍니당 (TMI 방출) 이 글을 보시는 모든 분들 항상 건강하시길 바랍니다!! Observer Pattern 개요 옵저버는 관찰하는 개체에 발생하는 모든 이벤트에 대해 여러 개체에 알리는 구독 메커니즘을 정의할 수 있는 동작 디자인 패턴 관찰자 패턴은 구독자 인터페이스를 구현하는 모든 개체에 대해 이러한 이벤트를 구독하거나 구독을 취소할 수 있는 방법을 제공한다. 실제 상황에서 생각해보기 서로의 정보를 주고받는 과정에서 정보의 단위가 클수록, 객체들의 규모가 클수록 복잡성이 증가하게 된다. 이때 가이드라인을 제시..

💌 Design Pattern 2022.02.22

[Design Pattern] Factory Method Pattern (팩토리메소드패턴) with Swift

안녕하세요! 조이임다^^7 오늘도 까먹지 않고 포스팅을 해봅니다..1!!!!! 오늘 정말 피곤하네요..흑흑 암튼 각설하고 바로 시작해볼게요! Factory Method Pattern 개요 슈퍼클래스에서 객체를 생성하기 위한 인터페이스를 제공하지만 서브클래스가 생성될 객체의 유형을 변경할 수 있도록 하는 생성 디자인 패턴이다. 즉, 객체를 만드는 부분을 Subclass에 맡기는 패턴이다. 실제 상황에서 생각해보기 우리가 물류 응용 프로그램을 만들고 있다고 생각해보자. 첫번째 앱 버전은 트럭 운송만 처리할 수 있으므로 Truck 클래스에 대부분의 코드를 작성해두었다. 이후 사업 확장으로 해상 물류를 처리하는 기능이 추가되어야 한다. 그러나 우리는 대부분 Truck 이라는 클래스에 로직을 작성해두었다. Shi..

💌 Design Pattern 2022.02.18

[Design Pattern] Singleton Pattern (싱글톤패턴) with Swift

안녕하세요 조이입니다~! 오늘은 게으름피우지 않고 디자인패턴 포스팅을 해보려고 해요! 오늘도 군말없이 바로 시작하겠습니다! Singleton Pattern 개요 "하나의 인스턴스만 생성하여 사용하는 디자인 패턴" 즉, 인스턴스가 필요할 때 똑같은 인스턴스를 만들지 않고 기존의 인스턴스를 활용하는 것이다. 실제 상황에서 생각해보기 하나의 나라를 생각해보자. 한 나라는 하나의 공식 정부를 가질 수 있다. 당연하게도! 정부를 구성하는 개인의 신원과는 상관없이 "대한민국 정부" 라는 제목은 담당자의 그룹을 식별할 수 있는 글로벌 엑세스 포인트라고 볼 수 있다. 대충 무슨 말인지는 알겠음. 그러면 우리가 코드로 적용할 때에는 언제 사용하지? 공통된 객체를 여러개 생성해서 사용해야하는 상황에서 사용한다. 인스턴스가..

💌 Design Pattern 2022.02.14

[Design Pattern] Adapter Pattern (어댑터패턴) with Swift

안녕하세요! Joy 입니다. 내친김에 어댑터 패턴까지 한번 알아보려고 합니당 군말없이 바로 시작하겠습니다! Adapter Pattern 개요 어댑터패턴은 구조패턴의 일종으로 서로 호환되지 않는 객체들이 협업할 수 있도록 하는 패턴 실제 상황에서 생각해보기 문제 상황 만약 주식 시장에서 모니터링 앱을 만든다고 가정하자. 이 앱은 XML 형식의 소스에서 주식 데이터를 가져와서 차트와 다이어그램을 표시한다. 어느날 타사의 분석 라이브러리를 통합하여 앱을 개선하려고 한다. 그런데, 해당 라이브러리는 JSON 형태의 데이터에서만 작동한다. XML과 함께 작동하도록 라이브러리를 변경할 수는 있지만 라이브러리에 의존하는 기존 코드를 손상시킬 수 있다. 처음부터 라이브러리 소스 코드에 액세스할 수 없어 이 접근 방식이..

💌 Design Pattern 2022.02.13

[Algorithm] Insertion Sort (삽입정렬) by Swift

안녕하세요! Joy 입니다. 저는 어저께 3차 백신 (부스터샷) 을 맞아서 회사도 연차내고 아주 푹 쉬느라고 포스팅을 못했어요 저와의 약속을 지키려고 매일 1일 1포스팅을 하려고 했는데.. 흐흑 그래도 생각보다 많이 아프진 않더라고요! 하루 푹 자고 나니까 말끔히 나아버렸습니다 히히 그럼 오늘은 세번째 알고리즘인 삽입 정렬을 공부해보려고 해요! 시~~작~~합니다~~~~ 개념 손 안의 카드를 정렬하는 방법과 유사하다. Insertion Sort는 Selection Sort와 유사하지만 조금 더 효율적인 정렬 알고리즘이다. 두번재 원소부터 시작하여 그 앞 (왼쪽)의 원소들과 비교하여 삽입할 위치를 지정한 후, 원소를 뒤로 옮기고 지정된 자리에 자료를 삽입하여 정렬하는 알고리즘이다. 최선의 경우 O(N)이라는..

🔡 Algorithm 2022.01.15

[Algorithm] Selection Sort (선택정렬) by Swift

안녕하세요! Joy 입니다. 알고리즘을 또 공부하러 왔습니다.. HIG 포스팅도 계속 해야하는데 번역기를 많이 참조하지만 생각보다 시간이 걸리다보니 늦어지네요 ㅠ_ㅠ (근데 갑자기 생각난건데 구독자가 많은 것도 아닌데 약간 유루바 느낌으로 포스팅 하는거 재밌습니다..히히) 아무튼! 오늘은 저번 거품정렬 (Bubble Sort) 에 이어 두번째 알고리즘 선택정렬을 정리해보려고 해요! 오타와 오류 지적은 감사히 받겠습니다! 개념 Bubble Sort와 유사한 알고리즘으로, 해당 순서에 원소를 넣을 위치는 이미 정해져있고, 어떤 원소를 넣을지 선택하는 알고리즘이다. 배열에서 해당 자리를 선택하고 그 자리에 오는 값을 찾는 것이라고 생각하면 된다. Process 먼저 주어진 배열 중에 최소값을 찾는다. 그 값을..

🔡 Algorithm 2022.01.11

[Algorithm] Bubble Sort (거품정렬) by Swift

안녕하세요! Joy 입니다. 오늘부터 알고리즘을 하나씩 정리해두려고 해요! 참고 자료는 하단에도 기재하겠지만, gyoogle님의 블로그를 참조했고, 예시 코드는 Swift로 제가 직접 작성했어요! (gyoogle님 글을 통해 다시 한번 알고리즘을 공부하고 정리하게 되었어요 감사합니다 : )) 알고리즘들을 하나씩 정리하고, 이후에는 백준과 프로그래머스 문제를 다시 한번 차근차근 복습하려고 합니다. 알고리즘은 정말 기본이잖아요! 저도 다시 기본으로 돌아가서 공부하는 마음으로 시작해보겠습니다! 오류와 오타는 댓글로 지적해주세요! 개념 Bubble Sort는 Selection Sort와 유사한 알고리즘으로 서로 인접한 두 원소의 대소를 비교하고, 조건에 맞지 않다면 자리를 교환하며 정리하는 알고리즘이다. 여기까..

🔡 Algorithm 2022.01.10

[IOS] Alamofire 사용하기! - (1)

오늘은 Alamofire를 Cocoapods를 이용하여 설치하고 API 데이터를 받아오는 과정을 공부해보려고 합니다! 두 개의 포스트로 나누어서 이번 포스트에서는 먼저 Alamofire 설치하는 과정을 다루어보겠습니다. 먼저, Alamofire란? Swift 기반 HTTP 네트워킹 라이브러리로서 네트워킹 작업을 단순화하고 네트워킹을 위한 다양한 메소드와 JSON 파싱 등을 제공한다. URLSession을 기반으로 하며 네트워킹 호출 부분에서 코드를 더 깔끔하고 가독성 있게 쓸 수 있다. 그렇다면 Cocoapods란 무엇일까요? 코코아 프로젝트를 위한 Ruby 기반의 패키지 관리 도구로서 프로젝트에 필요한 외부 라이브러리를 설치파기 쉽게 도와준다. 이제 Cocoapod을 이용하여 Alamofire 설치를 ..

반응형