플라이웨이트 패턴(Flyweight Pattern)은 메모리 사용을 최적화하기 위한 구조적 디자인 패턴이다. 이 패턴은 많은 수의 유사한 객체를 효율적으로 공유하여 메모리 사용을 줄이는 것을 목표로 한다.
public interface StringFlyweight
{
void Display();
}
FlyWeight 인터페이스
public class ConcreteStringFlyweight : StringFlyweight
{
private string value;
public ConcreteStringFlyweight(string value)
{
this.value = value;
}
public void Display()
{
Debug.Log("Value: " + value);
}
}
문자열 저장,출력 구현
public class StringFlyweightFactory
{
private Dictionary<string, StringFlyweight> flyweights = new Dictionary<string, StringFlyweight>();
public StringFlyweight GetStringFlyweight(string value)
{
if (!flyweights.ContainsKey(value))
{
flyweights[value] = new ConcreteStringFlyweight(value);
}
return flyweights[value];
}
}
같은 문자열은 동일한 플라이웨이트 객체를 사용하도록 구현
using UnityEngine;
public class FlyweightSimpleExample : MonoBehaviour
{
void Start()
{
StringFlyweightFactory factory = new StringFlyweightFactory();
StringFlyweight flyweight1 = factory.GetStringFlyweight("Hello");
StringFlyweight flyweight2 = factory.GetStringFlyweight("World");
StringFlyweight flyweight3 = factory.GetStringFlyweight("Hello");
flyweight1.Display(); // "Value: Hello" 출력
flyweight2.Display(); // "Value: World" 출력
flyweight3.Display(); // flyweight1과 동일한 인스턴스를 반환하기 때문에 "Value: Hello" 출력
}
}
문자열 "Hello"와 "World"를 각각 생성하고, "Hello" 문자열은 이미 생성된 플라이웨이트를 재사용하여 출력
이해하기 쉽게 문자로 예시를 들었지만 유니티에서 게임을 개발할때 총알, 파티클, 적, 아이템 등 많은 수의 객체를 효율적으로 관리할 때 플라이웨이트 패턴을 사용할 수 있다.
'개인 공부 > 디자인패턴' 카테고리의 다른 글
| 디자인패턴 컴포지트 (0) | 2024.07.15 |
|---|---|
| 디자인패턴 프록시 (0) | 2024.07.15 |
| 디자인패턴 퍼사드 (0) | 2024.07.15 |
| 디자인패턴 데코레이터 (0) | 2024.07.15 |
| 디자인패턴 브릿지 (0) | 2024.07.15 |