디자인 패턴 - 구조 패턴(플라이웨이트)
플라이웨이트 패턴
가상 인스턴스를 공유하여 사용해서 의미없는 메모리 낭비를 줄일때 사용합니다. (팩토리 패턴과 연계) (싱글톤이랑 같이 하나의 인스턴스를 생성하는것과 연관되어 있음)
실제 적용 예시
- 불편의 총알을 여러번 쏘고 싶은 게임을 개발할때 총알을 매번 새 인스턴스화 시키는것이 아닌 한번 생성된 인스턴스를 공유하면서 사용하면 더 최적화를 할수 있습니다.
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;
}
}
}
언제 사용할까 ?
많은 객체를 생성해서 사용해야 할때 해결책이 될수 있습니다.
장점
- 메모리 관리에 이점을 줍니다.
단점
- 인스턴스의 차이점이 많아질수도 복잡해 집니다.