일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- appcompatactivity
- 안드로이드
- Kotlin
- http 역사
- AAC
- 내부 단편화
- DiffUtil
- 데코레이터 패턴
- 리사이클러뷰
- 물리 메모리
- recyclerview
- 뷰홀더
- 상태관리
- Dispatchers
- GetX
- apk 빌드 과정
- appcompatacitivity
- AsyncListDiffer
- 리사이클러뷰풀
- http발전과정
- 프로세스
- flutter
- Android
- 플로이드워셜
- 운영체제
- 디자인 패턴
- 자이고트
- 절대 주소
- viewModelScope
- NestedScrollView
- Today
- Total
목록디자인 패턴 (8)
hong's android

템플릿 메소드 패턴(Template Method Pattern) 알고리즘의 골격을 정의한다. 즉 일련의 단계로 알고리즘을 정의한 것이다. AbstractClass는 템플릿 메소드 들어가 있고, abstract 메소드로 구체적인 구현을 서브클래스에게 요구한다. ConcreteClass는 여러개가 있을 수 있고, 구체적인 구현을 제공해야 한다. 템플릿 메소드는 위 메소드로 알고리즘을 구성한다. 공통적으로 제공해야 하는 구상 메소드는 final로 AbstractClass에서 제공한다. 여러 클래스들에서 공통적으로 제공해야하는 알고리즘이 생기면 코드는 중복될 수 있다. 알고리즘이 바뀌면 모든 클래스의 코드를 변경해야 하고, 공통적인 알고리즘을 제공하는 새로운 클래스를 추가하려면 많은 작업을 해야 한다. Abst..

상태 패턴 객체의 내부 상태가 바뀜에 따라 객체의 행동을 바꿀 수 있다. 직접 상태를 체크하고 상태에 따라 행동을 변경하는 것이 아니라 상태를 객체화하여 상태가 행동을 할 수 있도록 위임하는 패턴이다. 기존엔 객체의 상태를 저장하고, 변경하기 위해서 상태 별 상수 값을 만들어서 상태 변수에 저장했다. 그리고 어떠한 행동이 일어날 때마다 해당 상태에 맞게끔 해당 행동 메소드를 호출했다. 하지만 만약 상태가 추가, 변경 될수록 상태를 분기하는 코드를 수정해야 하고 OCP원칙에 따라 변경에 닫혀있고 확장에 열려있어야 하는데 이를 위반한다. 아래 블로그에 문제점에 대해 잘 정리되어 있다. https://velog.io/@y_dragonrise/디자인-패턴-상태-패턴State-Pattern Context는 sta..

컴포지트 패턴(Composite Pattern) 객체를 트리구조로 구성해서 부분-전체 계층구조를 구현한다. 컴포지트 패턴을 사용하면 클라이언트에서 개별 객체와 복합 객체를 똑같은 방법으로 다룰 수 있다. 서브 클래스안에 서브 클래스와 값이 존재 해야할때 모든 클래스들을 탐색하거나 단일 클래스를 호출할때 클라이언트에서 신경써야하는 부분들이 한 두개가 아니다. node(leaf를 가지고 있는 원소) 와 leaf(자식이 없는 원소) 모두 똑같은 패턴으로 호출 할 수 있다. 최상단 node가 있고 하위에 노드와 leaf가 섞여있어도 전체를 대상으로 작업을 수행할수도 있다. 클라이언트는 Component 형태의 Leaf, Composite를 다룬다. 하지만 Composite는 계층 구조를 관리하는 일과 메뉴 관련..

클래스 인스턴스를 하나만 만들고, 그 인스턴스로의 전역 접근을 제공한다. 즉, 인스턴스를 추가로 만들지 못하게 하여야 하고, 전역 접근 지점을 제공해야 한다. 연결 풀이나, 스레드 풀, 사용자 설정 같은 부분에서 싱글턴 패턴이 많이 쓰인다. 방법 1. 일반적인 싱글톤 패턴 Public class Singleton{ private static Singleton uniqueInstance; private Singleton(){} public static Singleton getInstance(){ if(uniqueInstance == null){ uniqueInstance = new Singleton(); } return uniqueInstance; } } 문제점 멀티 스레드 환경에서 동시에 getInsta..

요청 내역을 객체로 캡슐화해서 객체를 서로 다른 요청 내역에 따라 매개변수화 할 수 있다. 이러면 요청을 큐에 저장하거나 로그로 기록하거나 작업 취소 기능을 사용할 수 있다. 요청을 하는 객체와 요청을 수행하는 객체를 분리할 수 있다. (의존성 분리) 커맨드 패턴을 이용해서 스케쥴러나 스레드풀, 작업큐에 활용할 수 있다. 만약 명령을 실행하는 객체가 다수의 명령어를 실행해야 한다고 생각해보자. Public void setLightOn(Light light){ light.turnOn(); } Public void setLightOn(Light light){ light.turnOff(); } Public void setAlarmOn(Alarm alarm){ alarm.turnOn(); } 한 클래스 안에 실..

Simple factory 단순히 객체를 생성하는 부분을 캡슐화해서 객체를 생성할때 사용한다. 위와 같은 방식으로 캡슐화 해놓으면 여러 클래스에서 팩토리를 사용하게 되는 상황에서 구현을 변경할때 여기저기 변경할 필요가 없다. Simple factory 구현 방법 1.클라이언트는 ProduceFactory를 가진다. 2.ProduceFactory에서 조건에 맞는 Product를 생성해준다. 3.Product를 상위 형식으로 구현하고 서브 클래스로 구체화된 클래스들을 둔다. -> 다형성을 이용해서 항상 factory를 호출하게되면 Product형식을 받을수있게 할수있다. Factory method pattern 사용하는 서브 클래스에 따라 생산되는 객체가 결정되는 디자인 패턴 1. Product와 Facto..