c++메타 모드

1999 단어 디자인 모드
향원 모드 는 메모리 공간 을 절약 하고 효율 을 높이 는 모드 이다.대상 이 상당히 많 을 때 만 사용 해 야 한다.
#include 
#include 
#include 
using namespace std;

template 
class Singleton {
public:
    //         
    static T& getInstance() {
        static Token token;
        static T instance(token);   //              。
        return instance;
    }

    //    
    Singleton(const Singleton&) = delete;
    Singleton& operator=(const Singleton&) = delete;

protected:
    //          。
    struct Token{};

    //          
    Singleton() = default;
    virtual ~Singleton() = default;
};

struct Pos {
    int x;
    int y;
    Pos(int x, int y) : x(x), y(y) {}

    friend ostream &operator< {
    public:
        explicit Grass(Token token) {}

        void draw(const Pos &pos) override {
            cout << " " << pos << "     " << endl;
        }
    };

    //     
    class Tree : public Plant, public Singleton {
    public:
        explicit Tree(Token token) {}

        void draw(const Pos &pos) override {
            cout << " " << pos << "     " << endl;
        }
    };

}

int main()
{
    //      
    list<:tree> trees;
    for (int i = 0; i < 1000000; ++i) {
        trees.emplace_back(i, -i);
    }
    for (auto &tree : trees) {
        tree.draw();
    }

    //     
    list treesPos;
    for (int i = 0; i < 1000000; ++i) {
        treesPos.emplace_back(i, -i);
    }
    for (auto &pos : treesPos) {
        Flyweight::Tree::getInstance().draw(pos);
    }

    return 0;
}

향 원지 방식 으로본 고 는 단일 사례getInstance를 통 해 범 형 프로 그래 밍 을 통 해 다 형 을 실현 한다.
향 원 모드 는 내부 상태 와 외부 상태 가 있 고draw는 내부 상태 이 며pos는 외부 상태 이다.모든 대상 이 내부 상 태 를 함께 공유 하지만 데이터 구조 유지 가 필요 합 니 다.수량 이 그리 많 지 않 을 때 는 이 모드 를 사용 할 필요 가 없다.

좋은 웹페이지 즐겨찾기