Pop
-
Swift4: Protocol Oriented Programming - 8.사례 연구POP 2021. 3. 6. 19:48
8장 사례 연구 실제 프로젝트를 통해 언어와 프로그래밍 패러다임을 익혀보자. 디자인 패턴 사용을 적극적으로 고려하자. 애플리케이션을 위한 로그 서비스 만들기 데이터 접근 계층 만들기 로깅 서비스 로깅 프레임워크는 애플리케이션을 개발하면서 디버깅을 쉽게 도와주는 로그 메세지를 간단하게 작동시킬 수 있도록 해준다. 요구사항 여러 가지 로그 레벨을 가져야만 한다. Fatal, Error, Warn, Debug, Info 로그 레벨이 있다. 여러 가지 로그 프로파일을 가진다. LoggerNull와 LoggerConsole 두 가지 프로파일이 있고, LoggerNull은 로그 메세지에 할 수 있는 일이 아무 것도 없다. LoggerConsole 프로파일은 콘솔에 로그 메세지를 출력한다. 사용자는 자신만의 로깅 프..
-
Swift4: Protocol Oriented Programming - 7.스위프트에서 디자인 패턴 적용 - (3) 행위 패턴POP 2021. 2. 24. 21:06
행위 패턴 타입 간에 상호작용이 어떻게 이뤄지는 지 설명. 어떠한 일을 하기 위해 어떻게 서로 다른 타입의 인스턴스 간에 메세지를 보내는지 설명. 책임 연쇄 다른 핸들러에 위임돼 있을지 모르는 다양한 요청을 처리 커맨드 나중에 다른 컴포넌트에 의해 실행될 수 있게 행동이나 매개변수를 캡슐화한 객체를 생성 이터레이터 근본적인 구조는 노출시키지 않고, 객체의 요소에 연속적으로 접근할 수 있도록 한다. 미디에이터 서로 정보를 전달하는 타입 간의 결합도를 줄인다. 메멘토 객체의 현재 상태를 캡쳐하고 나중에 복구할 수 있게 객체를 얼마동안 저장 옵저버 객체의 변경 상태를 알린다. 다른 객체는 이러한 변경 사항에 대한 알림을 받기 위해 이를 구독할 수 있다. 스테이트 내부 상태가 변경될 경우 객체의 행동을 변경하기..
-
Swift4: Protocol Oriented Programming - 7.스위프트에서 디자인 패턴 적용 - (2) 구조 패턴POP 2021. 2. 24. 21:03
구조 패턴 어떻게 타입을 더 큰 구조체로 결합할 수 있는가를 서술. 더 큰 구조체는 작업하기 쉽고, 복잡도를 감추기에 좋다. 구조 패턴의 대부분의 패턴들은 객체 간의 연결을 수반한다. 어댑터(Adapter) 공존할 수 없는 인터페이스를 가진 타입을 합께 작동하게 해준다. 브리지(Bridge) 구현체로부터 타입의 추상적 요소를 분리하는데 사용, 둘은 달라질 수 있다. 컴포지트(Composite) 객체 그룹을 하나의 객체로 다룸 데코레이터(Decorator) 객체에 이미 존재하는 메소드에 행위를 추가하거나 오버라이드 퍼사드(Facade) 더 크고 복잡한 코드를 위한 단순화된 인터페이스 제공 플라이웨이트(Flyweight) 생성해야 하는 리소스를 줄이고 많은 유사 객체를 사용하도록 해준다. 프록시(Proxy)..
-
210218 TIL: POP-7.스위프트에서 디자인 패턴 적용 - (1) 생성 패턴TIL 2021. 2. 19. 03:11
POP https://welly-log.tistory.com/17 Swift4: Protocol Oriented Programming - 7.스위프트에서 디자인 패턴 적용 - (1) 생성 패턴 7장 스위프트에서 디자인 패턴 적용 디자인 패턴 공통의 소프트웨어 개발 문제를 확인하고 이를 다루기 위한 전략을 제공. 여러 개발적 문제를 해결하는 방법들이 입증되어 있기 때문에 개발 프 welly-log.tistory.com
-
Swift4: Protocol Oriented Programming - 7.스위프트에서 디자인 패턴 적용 - (1) 생성 패턴POP 2021. 2. 19. 03:10
7장 스위프트에서 디자인 패턴 적용 디자인 패턴 공통의 소프트웨어 개발 문제를 확인하고 이를 다루기 위한 전략을 제공. 여러 개발적 문제를 해결하는 방법들이 입증되어 있기 때문에 개발 프로세스 속도를 높일 수 있다. 또한, 유지하기 쉬운 일관된 코드를 얻을 수 있다. 코드와 구현한 디자인 패턴을 문서로 만들게 될 경우, 다른 개발자가 해당 코드가 어떠한 일을 하는지 이해하는데 도움을 줄 수도 있다. 코드의 재사용 유연성 문제를 수정하려고 하기 전에 수정하고자 하는 문제를 먼저 확인하는 것이 좋은 방법. 해결하고자 하는 문제에 대한 디자인 패턴이 없을 때는 디자인 패턴에 관한 지식과 근본적인 철학을 이용할 수 있을 것이다. 범주 생성 패턴: 객체의 생성을 지원 구조 패턴: 타입과 객체 컴포지션과 관련 행위..
-
Swift4: Protocol Oriented Programming - 6.프로토콜지향 프로그래밍POP 2021. 2. 17. 23:44
6장 프로토콜지향 프로그래밍 5장의 요구사항을 프로토콜지향 설계로 다시 작성한다. 프로토콜지향 프로그래밍 언어의 스위프트 프로토콜은 컴포지션(다중 채택)이 가능하기 때문에 5장에서와는 달리 지상/공중/해상 범주에 필요한 프로토콜들을 나눌 수 있다. 프로토콜 컴포지션, 상속, 확장을 이용하면 코드를 더욱 간결하고 안전성있게 작성할 수 있다. protocol Vehicle { var hitPoints: Int {get set} } // 모든 이동수단에서 같은 기능을 하는 메소드를 확장으로 구현 extension Vehicle { mutating func takeHit(amount: Int) { hitPoints -= amount } func hitPointsRemaining() -> Int { return ..
-
210216 TIL: POP-5.객체지향 프로그래밍, assertTIL 2021. 2. 16. 23:37
POP https://welly-log.tistory.com/13 Swift4: Protocol Oriented Programming - 5.객체지향 프로그래밍 5장 객체지향 프로그래밍 객체는 객체의 속성 정보인 프로퍼티와 객체가 수행하는 행위의 정보인 메소드를 포함한 자료 구조이다. 요구사항 설계 이동수단은 해상/지상/공중 세 개의 범주를 갖 welly-log.tistory.com assert iOS 프로그래밍을 위한 스위프트 기초 디버깅 모드에서 동작하며, 조건의 검증을 위해서 사용한다. assert()와 같은 역할을 하지만 실제 배포 환경에서도 동작하는 precondition() 함수도 있다. var someInt: Int = 0 // 조건이 맞으면 지나치고, 맞지 않으면 다음 문구를 출력 및 동작..