维护的代码采用如下架构:
class Peripheral
{
public:
Peripheral() {value = 0;}
static Peripheral * instance();
void get_value();
void set_value(int new_value);
private:
int value;
};
Peripheral * Peripheral::instance()
{
static Peripheral object;
return &object;
}
void Peripheral::get_value()
{
cout << value << endl;
}
void Peripheral::set_value(int new_value)
{
value = new_value;
}
int main()
{
Peripheral *p_object = Peripheral::instance();
Peripheral::instance()->get_value();
p_object->get_value();
Peripheral::instance()->set_value(2);
p_object->get_value();
}
输出:0, 0, 2
可以实现:
1)在其他文件中既可以通过指向该类的指针调用,也可以直接用类名调用,因为instance()函数是static型且是public;
2) 如果在用到该类成员的地方都采用如上方式调用,则该类的对象只被定义了一次,即instance()函数里定义的静态对象;
3)共享了该类的成员,因为他们用的是同一个对象;
原来这个叫单例模式。为了使整个代码中只存在一个该类的实例,可以将构造函数定义为private。