플라이급 패턴을 사용하는 목적은 불필요한 객체 초기화를 피하여 공간을 절약하는 것입니다. GOF 에 의해 정의 된 것처럼 객체는 내재 상태와 외재 상태의 두 가지 상태를 가질 수 있습니다.
- 고유 상태 : 플라이급에 저장됩니다. 플라이급 상황과 독립적 인 정보로 구성되어 공유 할 수 있습니다.
- 외부 상태 : 플라이급의 상황에 따라 달라 지므로 공유 할 수 없습니다. 클라이언트 객체는 외부 상태를 필요할 때 플라이급으로 전달합니다.
각 열에 모든 텍스트 행이 포함되고 행에 문자가 포함될 수있는 간단한 텍스트 편집기 응용 프로그램을 개발한다고 가정합니다.
여기서 딜레마는 Character 클래스를 디자인하는 방법입니다. char c문자 클래스 내에서 메인 (고유 상태) 객체이어야한다. 그러나 문자는 글꼴 및 크기 (외부 상태)를 가질 수 있습니다. 따라서 외부 상태를 Row (클라이언트)에 저장하고 필요할 때 액세스해야합니다. 이를 위해 글꼴과 크기를 저장하는 두 개의 목록이 작성됩니다.
Flyweight 패턴을 따라 문자를 재사용 할 수 있으며 모든 ASCII 기호 ( Character개체) 를 포함하는 특정 개체 목록 (flyweight pool)에서 개체를 참조하고 있습니다.
다음은 시각적으로 설명한 내용입니다.

'hello'를 인쇄 Character하려면 5 대신 4 개의 개체 만 필요합니다. 글꼴이 변경되면 새 개체가 필요하지 않습니다. 이 점에 유의 하지 않을 것이다 가능한 우리는, 예를 들어, 문자 클래스의 외부 상태를 저장했다
class Character
{
char c;
int Size;
Font font;
....
}
큰 데이터 세트에이 패턴을 적용 하면 응용 프로그램의 메모리 복잡성과 개체 재사용 성 이 크게 최적화 됩니다.