안녕하세요 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..
안녕하세요 Pingu입니다.🐧 지난 글에서는 구조 패턴에 대해서 간단하게 알아봤는데요, 이번 글에서는 여러 가지 구조 패턴 중 하나인 Adapter Pattern(어댑터)에 대해 알아보도록 하겠습니다. 어댑터 패턴이란? 어댑터 패턴은 서로 다른 인터페이스를 가진 객체를 함께 사용할 수 있도록 해주는 디자인 패턴입니다. 이러한 어댑터 패턴에는 Object Adapter, Class Adapter가 있습니다. Object Adapter Client는 프로그램의 기존 로직을 포함하는 클래스입니다. Target은 다른 클래스가 현재 로직에 포함 되려면 따라야 하는 프로토콜입니다. (Client가 사용 중인 인터페이스) Adaptee는 현재 존재하는 클래스가 아닌 외부에서 가지고온 유용한 클래스입니다. 따라서 인..
안녕하세요 Pingu입니다.🐧 지난 글에서 알아본 싱글턴 패턴을 마무리로 객체 지향 프로그래밍의 디자인 패턴 중 Creational Pattern(생성 패턴)에 대한 공부를 마치고 이번 글부터는 Structural Pattern(구조 패턴)에 대해 알아보려고 합니다. 이번 글에서는 다양한 구조 패턴에 대해 알아보기 전에 구조 패턴이 무엇인지 간단하게 알아보고 넘어가도록 하겠습니다. Structural Pattern (구조 패턴) 이란? 지난 글까지 알아본 생성 패턴은 객체가 생성되는 부분에 대한 디자인이었는데요, 구조 패턴은 클래스와 객체가 어떻게 구성되는지와 관련이 있습니다. 이해를 위해서 하나의 클래스에 2개의 클래스가 상속되어있는 다중 상속의 경우를 생각해볼게요. 이렇게 되면 두 개의 부모 클래스 ..
안녕하세요 Pingu입니다.🐧 지난 글에서는 Prototype Pattern에 대해 알아봤는데요, 이번 글에서는 또 다른 Creational Pattern 중 하나인 Singleton Pattern(싱글턴)에 대해 알아보도록 하겠습니다! 싱글턴 패턴이란? 싱글턴 패턴은 하나의 프로그램에서 단 하나의 객체만 있어도 되는 경우 해당 객체를 한 번만 생성하고, 모든 곳에서 접근 가능하게 해주는 패턴입니다. 싱글턴 패턴을 사용할 객체는 한 번만 생성되어야 하며 프로그램의 모든 곳에서 접근이 가능한 전역 변수여야 합니다. 한 번만 생성되어야 하므로 생성자를 private 접근 수준으로 만들어야 하고 이를 생성하기 위해서 static 생성 메서드를 만들고 static 변수에 할당해주면 됩니다. 저는 iOS 개발을 ..
안녕하세요 Pingu입니다.🐧 지난 글에서는 Factory Method Pattern에 대해 알아봤는데요, 이번 글에서는 또 다른 Creational Pattern 중 하나인 Prototype Pattern(프로토타입)에 대해 알아보도록 하겠습니다. 프로토타입 패턴이란? 프로토타입 패턴의 정의는 코드를 클래스에 종속시키지 않고 기존에 존재하던 객체를 복사할 수 있는 디자인 패턴입니다. 어떤 객체가 존재하고 해당 객체와 정확하게 똑같은 객체를 만들고 싶을 때 프로토타입 패턴을 사용할 수 있습니다. 어떻게 하면 특정 객체와 동일한 객체를 만들 수 있을까요? 일단 클래스와 같은 참조 타입을 복사하는 방법에는 얕은 복사(shallow copy)와 깊은 복사 (deep copy)가 있습니다. 얕은 복사는 그냥 새..
- Total
- Today
- Yesterday
- operating
- 코테
- 알고리즘
- IOS
- 아이폰
- 스위프트
- DP
- 동시성
- 문법
- 백준
- 프로그래밍
- OS
- document
- design
- Combine
- 앱개발
- mac
- 자료구조
- Publisher
- 테이블뷰
- dfs
- Xcode
- Swift
- OSTEP
- System
- pattern
- 코딩테스트
- BFS
- operator
- Apple
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |