C ++中的Flyweight模式

时间:2013-12-10 05:09:59

标签: c++ oop design-patterns

创建flyweight图案时,通常如何存储超级对象。让我们说我创造了一架飞机。

class Aircraft
{
private:
    char make[32];
    char model[32];
    double cruiseSpeed;
    double cruiseAltitude;
    double climbRate;
    double wingspan;
    double fuselageLength;

    AircraftType craftType;

public:

    Aircraft(void);
    Aircraft(AircraftType);
    ~Aircraft(void);

    void setMake(char*);
    void setModel(char*);
    void setCruiseSpeed(double);
    void setCruiseAltitude(double);
    void setClimbRate(double);
    void setWingSpan(double);
    void setFuselageLength(double);

    char* getMake();
    char* getModel();
    double getCruiseSpeed();
    double getCruiseAltitude();
    double getClimbRate();
    double getWingSpan();
    double getFuselageLength();    
};

让我们说我正在阅读xml数据表中的许多飞机,所以我想创建一个这些对象并将其余信息存储在某处。我是否会创建另一个管理flyweight信息的类,然后可以通过Aircraft对象传递一个键来一次输入一个实例?或者你只是绕过将信息放在对象实例中?

对于这种类型的对象,在不创建多个实例时获得的唯一效率是get和sets吗?

1 个答案:

答案 0 :(得分:0)

查看boost flyweight implementation。 在你这样做之后,只需使用boost flyweight。

如果您不想使用boost,请在这种情况下使用boost。