디자인 모드 1 일 1 연: 형 원 모드 (Flyweight)

Flyweight 모드 는 공유 기술 을 활용 하여 대량의 입자 도 대상 을 효과적으로 지원 합 니 다.게임 개발 에서 향 원 모델 의 전형 적 인 응용 은 동적 으로 비트 맵 글꼴 을 생 성 하 는 것 이다.
class Texture;

// flyweight
class Glyph {
public:
    void Display(int x, int y);
    
public:
    Texture* tex; //     
    int c;        //   
    int w;        //  
    int h;        //  
}

// flyweight factory
class Font {
    public:
        Glyph* GetGlyph(int c);
        
    private:
        std::map<int,Glyph*> glyphs;
}

Glyph* GetGlyph(int c) {
    Glyph* glyph = null;
    if (glyphs.Contains(c)) {
        glyph = glyphs[c];
    }
    else {
        glyph = new Glyph();
        glyph.c = c;
        // todo ...        ,    
        glyphs[c] = glyph;
    }
    return glyph;
}

// test
void Test() {
    const char* str = "aabccc";
    Font* font = new Font();
    for (char* ptr = str; *ptr != '\0'; ptr++) {
        Glyph* glyph = font->GetGlyph(*ptr);
        glyph->Display((ptr - str) * 20, 0);
    }
    
    // todo ...  destroy
}

    PS. 제 디자인 모델 시리즈 블 로그, 칼럼 은 간단 한 사례 를 통 해 디자인 모델 을 보 여 줌 으로 써 초보 자 들 에 게 쉽게 이해 할 수 있 습 니 다.깊이 공부 하려 면 GoF 의 을 보십시오.

좋은 웹페이지 즐겨찾기