본문

Flyweight Pattern

반응형

Flyweight Pattern는 동일한 것을 공유해서 객체 생성을 줄여 로직을 가볍게 만드는 패턴입니다.

 

이미 가지고 있는 객체에 대한 요청이 들어왔을 때는 관리하고 있던 객체를 반환하고,

가지고 있지 않은 것을 요청하면 새로 객체를 만들어 관리 리스트에 추가시키고 반환합니다.

 

 

 

이미지 출처: www.geeksforgeeks.org

 

💡 source

import java.util.HashMap;
import java.util.Map;

public class 터미네이터 {
    private String 이름;

    터미네이터(String 이름) {
        this.이름 = 이름;
    }

    public String get이름() {
        return 이름;
    }
}

public class 터미네이터생성공장 {
    private static Map<String, 터미네이터> map = new HashMap<String, 터미네이터>();

    public synchronized static 터미네이터 get터미네이터(String 이름) {
        if (!map.containsKey(이름)) {
            터미네이터 새로운터미네이터 = new 터미네이터(이름);
            map.put(이름, 새로운터미네이터);
            System.out.println("신규 생성: " + 이름);
        } else {
            System.out.println("already registered: " + 이름);
        }

        return map.get(이름);
    }
}

public class Main {
    public static void main(String[] args) {
        터미네이터 터미네이터1 = 터미네이터생성공장.get터미네이터("주인장");
        터미네이터 터미네이터2 = 터미네이터생성공장.get터미네이터("홍길동");
        터미네이터 터미네이터3 = 터미네이터생성공장.get터미네이터("주인장");
    }

}

 

💡 결과

신규 생성: 주인장
신규 생성: 홍길동
already registered: 주인장

 

반응형

공유

댓글