Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- Concurrent
- rib
- Ribs
- Dependency Rule
- 잡초가득블로그
- 메모리 접근 충돌
- RxCocoa
- Automatically manage signing
- ios
- windowScene
- in-out
- RIBs Tutorial
- iOS 버전 점유율
- swiftdocs
- UICoordinateSpace
- App Signing
- conflicting access to memory
- 대머리깃허브
- Apple Certificate
- Git Large File Storage
- 클린아키텍쳐
- Dispatch.main.sync
- iOS Target
- Github file size
- coordinateSpace
- Large File Storage
- RxSwift
- memory safety
- 로버트마틴형
- SWIFT
Archives
- Today
- Total
빙수왕의 개발일지
디자인패턴들 정리(1) - Singleton, Factory, Decorator 본문
디자인 패턴이란?
문제를 해결하는 어떤 정형화된 해결책, 템플릿, 개발 패턴
종류
- Creational - 객체들을 어떻게 생성히고 인스턴스화 하는가 / 인스턴스가 어떻게 만들어지는지 캡슐화하여 완전히 감춘다.
- Structural - 객체들이 어떻게 구성되고 결합되는가
- Behavior - 객체들이 서로 어떻게 소통하는가
어떤것들이 있는가?
Singleton(Creational)
: 전역 인스턴스 한놈만 쓴다. 근데 싱글톤은 웬만하면 쓰지말자하
싱글톤 인스턴스가 너무 많은 일을 하거나 많은 데이터를 공유시킬 경우 다른 클래스의 인스턴스들 간에 결합도가 높아져 "Open closed principle" 을 위배하게 된다.
다 같이 한놈을 공유하기 때문에 수정이 발생하면 그걸 쓰는놈을 다 수정해야 할 수도 있다.
* 싱글톤을 사용하면서 주의할점
1. final하게 만들고 2. private init해줘야 한다. (다른데서 init 못쓰게)
Factory(Creational)
: 서브클래스에서 넣는 인풋값에 따라 인스턴스가 결정된다. 슈퍼클래스에서 인스턴스를 내려준다.
ex) 인형공장에서.. 곰인형 만들어주세요! 하면 곰인형 나오고. 토끼인형 만들어주세요! 하면 토끼인형 나오는것
뭔가 enum형 input을 넣어 객체를 받을 수 있을 듯.
→ 결합도를 느슨하게 하며(Loosely Coupled), 확장을 쉽게 합니다. OCP 만족.
→ 객체 만드는 로직이 숨겨진다.
Decorator(S) 장식자
: 기존의 코드를 건드리지 않고 확장하도록 합니다.
Open-Closed principle 준수
4가지 요소들
- Component 추상 클래스로 데코레이터로 감싸져 사용될 수 있음.
- ConcreteComponent 인터페이스를 동적으로 추가함.
- Decorator Decorator 안에는 Component 객체를 가짐. 자신이 장식할 구성요소와 같은 인터페이스 또는 추상 클래스를 구현함.
- ConcreteDecorator Decorator가 감싸고 있는 Component 객체를 위한 인스턴트 변수가 있어 Component 상태를 확장할 수 있음.
참조한곳
http://minsone.github.io/programming/designpattern-decorator
'개발 > iOS' 카테고리의 다른 글
RxCocoa를 사용하여 UITableViewCell을 구성하는 방법 (0) | 2021.06.24 |
---|---|
디자인패턴들 정리(2) - Facade, Adapter, Observer, Coordinator, Command (0) | 2021.06.17 |
유투브 샘플앱으로 무작정 RxSwift + MVVM 사용해보기 (0) | 2021.06.16 |
자꾸 까먹는 타입 캐스팅 정리 (0) | 2021.06.16 |
switch 사용하지 않고 if로 Result 타입 캐스팅하기 (0) | 2021.06.16 |