같은 "내재 상태(intrinsic)"를 가진 객체는 공유해서 메모리를 절약하는 flyweight 팩토리를 구현하세요.
export interface Glyph {
readonly char: string;
readonly font: string;
readonly size: number;
}
export class GlyphFactory {
get(char: string, font: string, size: number): Glyph;
size(): number; // 현재 캐시된 flyweight 개수
clear(): void; // 캐시 초기화
}
(char, font, size) 조합에 대해 항상 같은 인스턴스를 반환size()는 지금까지 만든 고유 flyweight 수clear() 후 다시 같은 조합을 요청하면 새 인스턴스 (캐시 비워졌으므로)