单例对象

使用 Singleton 构造型标记的多重性为 1 的对象在系统的整个生命周期中仅实例化一次。单例对象在 C 中实施为 struct 和函数。但是,单例属性在数据上没有强制性。

单例对象在规范文件中声明为 struct。例如:

struct object_0_t {
    /* attributes of object_0 */
};

单例对象在实施文件中作为程序包对象进行实例化,如下所示:

struct object_0_t object_0;

由于只能有一个单例实例,其操作不能包含上下文指针作为它们的第一个自变量。例如,对于带有含一个自变量 a1 的操作 op1() 的对象 A,会生成以下函数原型:

/*## operation op1(int) */
void A_op1(int a1);

如果同一对象不是单例,则会生成以下函数原型:

/*## operation op1(int) */
void A_op1(struct A_t* const me, int a1);

反馈