안녕하세요 Pingu입니다.🐧 지난 글에서는 구조 패턴 중 Bridge Pattern(브리지)에 대해 알아봤는데요, 이번 글에서는 또 다른 구조 패턴 중 하나인 Composite Pattern(컴포지트)에 대해 알아보도록 하겠습니다. 컴포지트 패턴이란? 컴포지트 패턴은 객체를 트리 구조로 구성하여 마치 하나의 객체인 것처럼 작업할 수 있는 구조 패턴입니다. Component 컴포지트 패턴에 사용할 객체 모두에 사용가능한 인터페이스를 선언합니다. 하위 객체에 접근하고 관리하기 위한 인터페이스를 선언합니다. Leaf 하위 객체가 없는 가장 기본 단위의 객체입니다. 기본 객체에 대한 작업을 구현합니다. Composite (Container) Container라고도 하며 Leaf나 다른 Composite를 하위..
안녕하세요 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)가 있습니다. 얕은 복사는 그냥 새..
안녕하세요 Pingu입니다.🐧 지난 글에서는 Builder Pattern에 대해 알아봤는데요, 이번 글에서는 또 다른 Creational Pattern 중 하나인 Factory Method Pattern(팩토리 메서드)에 대해 알아보도록 하겠습니다. 팩토리 메서드 패턴이란? 객체를 만들기 위한 인터페이스를 정의하지만, 어떤 클래스의 인스턴스를 생성할지에 대한 결정은 하위 클래스가 정하도록 하는 방법입니다. 간단하게 말해서 객체 생성을 서브 클래스가 하도록 처리하는 패턴입니다. 즉 객체 생성을 캡슐화할 수 있으며 이로 인해 부모 클래스는 자식 클래스가 어떤 객체를 생성하는지 몰라도 됩니다. 팩토리 메서드 패턴은 위와 같은 구조를 갖습니다. Product Creator와 하위 클래스가 생성할 수 있는 모든 ..
안녕하세요 Pingu입니다.🐧 지난 글에서는 Abstract Factory 패턴에 대해 알아봤었는데요, 이번 글에서는 또 다른 Creational Pattern인 Builder Pattern에 대해 알아보려고 합니다. 빌더 패턴이란? 복잡하게 생성되어야 할 객체를 구현할 때 구성을 분리하여 다른 표현으로 만들 수 있게 하는 패턴입니다. 여기서 표현이라고 하니 좀 와 닿지 않는데요, 간단하게 동일한 역할을 하는 다른 코드로 만들 수 있다고 볼 수 있습니다. 즉 어떤 객체를 생성자로 만들 때 한 번에 모두 만들 수도 있지만 객체가 가지는 요소가 많다면 여러 단계로 나누어 객체를 만들 수 있게 하는 패턴입니다. 빌더 패턴은 위의 그림과 같이 3가지 요소로 나눌 수 있어요. Director input을 받고 b..
- Total
- Today
- Yesterday
- 동시성
- 프로그래밍
- 아이폰
- DP
- OSTEP
- 백준
- pattern
- Publisher
- Combine
- 앱개발
- IOS
- design
- System
- operating
- Swift
- 테이블뷰
- 알고리즘
- 코테
- Apple
- 코딩테스트
- Xcode
- 스위프트
- operator
- dfs
- 문법
- OS
- 자료구조
- BFS
- mac
- document
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |