상세 컨텐츠

본문 제목

Flyweight 패턴 배워보기

Java

by techbard 2014. 1. 21. 20:00

본문

반응형

Flyweight 패턴은 요청한 것과 동일한 객체가 있으면 새로 생성하지 않고 존재하는 것을 리턴하고 새로운 것이 요청되면 생성하여 리턴하는 디자인 패턴이다.

 

유일한 생성방법을 제공하기 위해 생성하고자 하는 클래스를 외부에서 접근하지 못하게 이너 클래스로 작성한다. 또한, 클래스 생성 요청이 빈번한 경우에 대한 처리로 synchronized 메소드 처리가 되어 있다.

 

1. 먼저 팩토리 클래스를 작성한다.

 

 

요청을 받으면 Animal 클래스를 생성해서 HashMap을 뒤져 있으면 그것 그냥 리턴하고, 없으면 생성해서 HashMap에 넣고 리턴한다.

 

Animal 클래스는 이너 클래스로 작성되어 있어서 외부에서는 접근할 수 없고 static 메소드인 getAnimal()을 통해서 생성하도록 되어 있다.

 

2. 테스트 클래스로 확인해 보자.

 

 

결과:

a1: 사자
a2: 호랑이
a3: 사자

a1 == a3
a2 != a3

4번 라인에서 Animal 클래스는 AnimalFactory 내의 이너 클래스이므로 타입을 결정할 수 없고, 클래스명.클래스명으로 타입을 지시해야 한다.

 

4-6번 라인에서 String을 받아 객체를 생성했다.

 

이제 이 객체들의 이름을 출력해 내용을 확인해 보자. 내용으로 볼 때는 a1 과 a3 객체가 같은 것으로 추정된다. 다시 실질적으로 확인해 보자.

equals() 메소드는 객체가 같은지 다른지 boolean 값을 리턴한다.

 

14-19번 라인에서 비교를 하고 있으며 결과를 볼때 a1, a3 객체는 같은 객체이고, a2 와 a3 객체는 다른 객체임을 알 수 있다.

 

FlyweightPattern.zip

 

 

반응형

관련글 더보기

댓글 영역