디자인 패턴 - 플라이웨이트 패턴(Flyweight Pattern)
디자인 패턴이란?
디자인 패턴이란? 게시글을 참고하자.
생성(Creational) 패턴 | 구조(Structural) 패턴 | 행동(Behavioral) 패턴 |
---|---|---|
Singleton | Adapter | Command |
Abstract Factory | Composite | Interpreter |
Factory Method | Decorator | Iterator |
Builder | Facade | Mediator |
Prototype | Flyweight | Memento |
Proxy | Observer | |
State | ||
Strategy | ||
Template Method |
플라이웨이트 패턴
플라이웨이트 패턴이란 인스턴스를 가능한 한 공유해서 사용함으로써 메모리를 절약할 수 있는 패턴을 말한다. 어떤 클래스의 인스턴스 한 개만을 가지고 여러 개의 ‘가상 인스턴스’를 제공하고 싶을 때 사용한다.
구성 요소
- Flyweight 공유에 사용할 클래스들의 인터페이스를 선언한다.
- ConcreteFlyweight Flyweight의 내용을 정의한다(실제 공유될 객체임).
- FlyweightFactory Flyweight의 인스턴스를 생성 또는 공유해주는 역할을 한다
- Client 해당 패턴의 사용자
장점과 단점
장점
- 실행시에 객체 인스턴스의 개수를 줄여 메모리를 절약할 수 있다.
- 여러 ‘가상 객체’의 상태를 한 곳에 집중시켜놓을 수 있다.
단점
- 특정 인스턴스만 다른 인스턴스처럼 동작하는 것이 불가능하다.
- 객체의 값을 변경하면 공유받은 ‘가상 객체’를 사용하는 곳에 영향을 줄 수 있다.
어떤 클래스의 인스턴스가 아주 많이 필요할 때 모두 똑같은 방식으로 제어할 수 있는 경우에 유용하게 사용할 수 있다.
댓글남기기