플라이웨이트 패턴

가상 인스턴스를 공유하여 사용해서 의미없는 메모리 낭비를 줄일때 사용합니다. (팩토리 패턴과 연계) (싱글톤이랑 같이 하나의 인스턴스를 생성하는것과 연관되어 있음)

실제 적용 예시

  • 불편의 총알을 여러번 쏘고 싶은 게임을 개발할때 총알을 매번 새 인스턴스화 시키는것이 아닌 한번 생성된 인스턴스를 공유하면서 사용하면 더 최적화를 할수 있습니다.
class Bullet {
    private int x;
    private int y;

    public void setX(int x) {
        this.x = x;
    }

    public void setY(int y) {
        this.y = y;
    }

    public void shot(){
				...
    }
}

public class BulletFactory {
    public static cacheMap: Map<String, Bullet> = new Map();

    public static getBullet(bullet){
        if (cacheMap.contain(bullet)) {
					return cacheMap.get(bullet);
				} else {
 					const newBullet = new Bullet();
					cacheMap.add(newBullet);
					return newBullet;
				}
    }
}

언제 사용할까 ?

많은 객체를 생성해서 사용해야 할때 해결책이 될수 있습니다.

장점

  • 메모리 관리에 이점을 줍니다.

단점

  • 인스턴스의 차이점이 많아질수도 복잡해 집니다.