안녕하세요 Pingu입니다.🐧 지난 글에서는 행동 패턴 중 하나인 Interpreter Pattern(인터프리터)에 대해 알아봤었는데요, 이번 글에서는 또 다른 행동 패턴인 Iterator Pattern(이터레이터)에 대해 알아보도록 하겠습니다. 이터레이터 패턴이란? Iterator Pattern은 list, stack, tree 등과 같은 기본적인 표현을 노출하지 않고 객체를 순차적으로 접근할 수 있는 방법을 제공하는 패턴입니다. Swift에서는 IteratorProtocol을 채택하여 for문을 사용하여 반복할 수 있는 타입을 정의하게 됩니다. Iterator 요소에 접근하고 탐색하기 위한 인터페이스를 정의합니다. Concrete Iterator Iterator 인터페이스를 구현합니다. Iterato..
안녕하세요 Pingu입니다. 🐧 지난 글에서는 행동 패턴 중 하나인 Command Pattern(커맨드)에 대해 알아봤었는데요, 이번 글에서는 또 다른 행동 패턴인 Interpreter Pattern(인터프리터)에 대해 알아보도록 하겠습니다. 인터프리터 패턴이란? 인터프리터 패턴이란 언어가 주어지면 해당 표현을 사용하여 언어로 문장을 해석하는 인터프리터를 사용하여 문법 표현을 정의하는 방법입니다. 어떤 문제가 자주 발생하는 경우 해당 문제를 간단한 언어로 표현하는 것이 편한데요, 이러한 문자들을 해석하는 역할을 인터프리터가 하게 됩니다. 대표적인 예로 정규표현식이 있는데요, 정규표현식은 문자열 패턴을 표현하는 데 사용하는 하나의 형식입니다. 정규표현식이 주어지면 규칙에 따라 처리해서 어떤 문자열을 해석하..
안녕하세요 Pingu입니다.🐧 지난 글에서는 행동 패턴 중 하나인 Chain of Responsibility Pattern(책임 연쇄 패턴)에 대해 알아봤었는데요, 이번 글에서는 또 다른 행동 패턴인 Command Pattern(커맨드)에 대해 알아보도록 하겠습니다. 커맨드 패턴이란? Command Pattern은 요청을 하나의 객체로 캡슐화해서 이를 큐나 log로 처리하는 방법입니다. 이렇게 캡슐화한 작업은 실행 취소를 할 수도 있게 만들 수 있어요. OS에서 스케줄러가 작업들을 관리하거나, iOS에서 Operating Queue에 Operation 객체로 작업을 추가하는 예 들이 떠오르는 패턴입니다. Command 작업을 실행하기 위한 인터페이스를 정의합니다. Command를 실행하기 위한 하나의 메..
안녕하세요 Pingu입니다.🐧 지난 글에서는 구조 패턴 Flyweight Pattern에 대해 알아봤는데요, 이번 글에서는 GoF의 마지막 구조 패턴인 Proxy Pattern(프록시)에 대해 알아보도록 하겠습니다. 프록시 패턴이란? 프록시 패턴은 다른 객체에 대한 접근을 제어할 수 있도록 surrogate, placeholder를 제공할 수 있는 구조 패턴입니다. 프록시가 원본 객체에 대한 접근을 제어하기 때문에 어떤 요청이 원본 객체에 전달되기 전이나 후에 작업을 수행할 수 있어요. 제가 이해한 대로 프록시 객체를 표현하자면 어떤 객체가 존재하지만, 해당 객체를 바로 사용하기엔 부담이 되는 경우에는 프록시 객체를 통해 처리를 하고 해당 객체가 반드시 필요한 시점에야 비로소 해당 객체를 생성하여 사용하..
안녕하세요 Pingu입니다.🐧 지난 글에서는 구조 패턴 중 Facade Pattern(퍼사드)에 대해 알아봤는데요, 이번 글에서는 계속해서 구조 패턴 중 하나인 Flyweight Pattern(플라이 웨이트)에 대해 알아보도록 하겠습니다. 플라이 웨이트 패턴이란? Flyweight 패턴은 메모리 사용량과 처리를 최소화하기 위한 디자인 패턴입니다. Flyweight 패턴은 각 객체의 모든 데이터를 유지하는 대신 여러 객체 간에 state 공통부분을 공유하여 메모리에 더 많은 객체를 넣을 수 있는 구조적 디자인 패턴입니다. Flyweight 패턴은 모든 객체가 기본 데이터를 공유하여 메모리를 절약하게 되는데요, 데이터 공유를 위해 이러한 객체들은 보통 immutable(변경 불가능) 합니다. 플라이 웨이트 ..
안녕하세요 Pingu입니다. 🐧 지난 글에서는 구조 패턴 중 Decorator Pattern(데코레이터)에 대해 알아봤는데요, 이번 글에서는 계속해서 구조 패턴 중 하나인 Facade Pattern(퍼사드)에 대해 알아보도록 하겠습니다. 퍼사드 패턴이란? 퍼사드 패턴은 라이브러리, 프레임워크, 혹은 복잡한 클래스들의 집합에 대한 단순화된 인터페이스를 제공하는 디자인 패턴입니다. 하나의 시스템을 서브 시스템들의 조합으로 구성하면 복잡성을 줄이는데 도움이 됩니다. 이러한 설계의 목표는 서브 시스템 간 통신 및 종속성을 최소화하는 것인데요, 이를 위한 방법으로 서브 시스템의 기능을 단순한 인터페이스를 제공하는 퍼사드 객체를 사용하는 것입니다. Facade 어떤 Subsystem 클래스가 클라이언트의 요청에 응..
안녕하세요 Pingu입니다.🐧 지난 글에서는 구조 패턴 중 Composite Pattern(컴포지트)에 대해 알아봤는데요, 이번 글에서는 계속해서 구조 패턴 중 하나인 Decorator Pattern(데코레이터)에 대해 알아보도록 하겠습니다. 데코레이터 패턴이란? 데코레이터 패턴은 기존 객체가 가진 동작들을 포함하는 특수 래퍼를 만들고 새로운 기능을 추가할 수 있는 디자인 패턴입니다. 데코레이터 패턴은 Wrapper 패턴이라고도 합니다. 기존 객체를 감싸는 Wrapper를 만들고 해당 Wrapper 객체에 다른 기능들을 넣는 패턴이기 때문이에요. Component 동적으로 추가된 기능을 가질 수 있는 객체에 대한 인터페이스를 정의합니다 즉 Wrapper와 Wrapper에 의해 래핑 된 객체 모두에 대한 ..
안녕하세요 Pingu입니다.🐧 지난 글에서는 구조 패턴 중 Adapter Pattern(어댑터)에 대해 알아봤는데요, 이번 글에서는 또 다른 구조 패턴 중 하나인 Bridge Pattern(브리지)에 대해 알아보도록 하겠습니다. 브리지 패턴이란? 브리지 패턴은 큰 클래스나 밀접하게 관련된 클래스 집합을 구현 계층과 추상 계층으로 분할할 수 있는 디자인 패턴입니다. 추상화를 구현하는 일반적인 방법은 상속을 사용하는 것입니다. 추상 클래스는 추상화에 대한 인터페이스를 정의하고 이를 상속한 서브 클래스들은 이를 구현하게 되는데요, 이러한 방법은 서브 클래스가 영구적으로 추상 클래스를 바인딩하므로 추상화와 구현을 독립적으로 사용하기 어렵습니다. 그럼 추상화와 구현이라는 용어를 이해해보겠습니다. 추상화는 inte..
- Total
- Today
- Yesterday
- Apple
- 아이폰
- document
- 백준
- 코딩테스트
- Xcode
- 알고리즘
- BFS
- OSTEP
- 스위프트
- dfs
- 코테
- 자료구조
- 프로그래밍
- Publisher
- pattern
- 동시성
- mac
- 테이블뷰
- 앱개발
- DP
- operator
- System
- operating
- IOS
- Combine
- 문법
- design
- OS
- Swift
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | |||||
| 3 | 4 | 5 | 6 | 7 | 8 | 9 |
| 10 | 11 | 12 | 13 | 14 | 15 | 16 |
| 17 | 18 | 19 | 20 | 21 | 22 | 23 |
| 24 | 25 | 26 | 27 | 28 | 29 | 30 |
| 31 |