在一个软件项目中,我已经尽力使这些类松散耦合。现在,我正努力将分散的数据(从松散耦合的类的对象)转换为数据对象。该数据对象(例如用于记录)是预定义的,并且必须用来自几个类的对象的数据填充。 由于真正的代码是专有的,我已经编写了下面的代码来解释我的问题:
class Gear {
public:
Gear(unsigned int amount);
~Gear();
void shiftUp();
void shiftDown();
private:
const unsigned int amount;
unsigned int current;
};
class Speedometer {
public:
Speedometer();
~Speedometer();
void display() const;
private:
double currentSpeed;
};
class Bike {
public:
Bike(unsigned int nrWheels, Gear& gear, Speedometer& speedometer);
~Bike();
void peddle() const;
void break() const;
private:
const unsigned int nrWheels;
Gear& gear
Speedometer& speedometer;
};
class Cyclist {
public:
Cyclist(const std::string name, Bike& bike);
~Cyclist();
void ride();
private:
const std::string name;
Bike& bike;
};
class Factory {
public:
Factory();
~Factory();
Cyclist& build() const;
};
struct PredefinedData {
PredefinedData();
~PredefinedData();
std::string cyclistName;
unsigned int nrWheels;
unsigned int currentGear;
double currentSpeed;
};
Factory(对象)使用它引用的所有对象(递归)构建一个Cyclist(对象)。在执行程序期间,所有这些对象的状态都将发生变化。为了例如使用其所有引用记录Cyclist对象的状态,使用PredefinedData类中的对象。该对象必须填充骑自行车者及其参考文献的数据。
我自己的一些想法/测试:
你会如何解决这个问题?这种情况有设计模式吗?
答案 0 :(得分:0)
我这样做:
class Cyclist {
public:
Cyclist(const std::string name, Bike& bike)
: data(name), bike(bike) {}
const PredefinedData& getPredefinedData()
{
data.nrWheels = bike.getNrWheels();
data.currentGear = bike.gear.getCurrent();
data.currentSpeed = bike.speedometer.getSpeed();
return data;
}
private:
PredefinedData data; // includes name, used as a cache
Bike& bike;
};