Flyweight 패턴은 동일하거나 유사한 객체들 사이에 가능한 많은 데이터를 서로 공유하여 사용하도록 하여 메모리 사용량을 최소화하는 패턴입니다. 구조 Flyweight 공유에 사용할 클래스들의 인터페이스를 선언합니다. ConcreteFlyweight Flyweight의 내용을 정의하며, 실제로 공유될 객체입니다. FlyweightFactory 해당 클래스를 통해서 Flyweight의 인스턴스를 생성 또는 공유합니다. Client FlyweightFactory로 생성한 인스턴스를 사용합니다. 활용 상황 어플리케이션에 의해 생성되는 객체의 수가 많을때 유용합니다. 생성된 객체가 오래도록 메모리에 상주하며, 사용되는 횟수가 많을때 유용합니다. 생성될 객체의 외적 특성이 클라이언트 프로그램으로부터 정의되어야..