전체 글
-
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 // 조건이 맞으면 지나치고, 맞지 않으면 다음 문구를 출력 및 동작..
-
Swift4: Protocol Oriented Programming - 5.객체지향 프로그래밍POP 2021. 2. 16. 19:53
5장 객체지향 프로그래밍 객체는 객체의 속성 정보인 프로퍼티와 객체가 수행하는 행위의 정보인 메소드를 포함한 자료 구조이다. 요구사항 설계 이동수단은 해상/지상/공중 세 개의 범주를 갖고 여러 범주의 멤버가 될 수 있다. 자신이 속해 있는 범주와 일치하는 타일에 있으면 이동 또는 공격 할 수 있다. 자신이 속해 있는 범주와 일치하는 타일에 있지 않으면 이동 또는 공격할 수 없다. 체력이 0이 되면 움직이지 못하는 상태로 간주한다. 순회가 가능한 단일 배열에 활동 가능한 모든 이동수단을 가지고 있어야 한다. 객체지향 프로그래밍 언어의 스위프트 스위프트는 객체지향 방식의 언어로 사용될 수 있다. class Vehicle { var vehicleTypes = [TerrainType]() var vehicleA..