单例模式的应用

单例模式是一种常见的软件设计模式。
如果把《乡村爱情故事》看做是一个程序(进程),永强和王大拿可以看成两个类。
在第一集需要永强出场,唱一首开场曲。然后第二集的时候,又需要永强出来打个酱油。
那么在这两次中,一般情况下是需要构建两次对象,然后调用永强的方法,这种方式的缺点是臃肿与增加开销、增加内存泄露的机会。
单例模式为我们提供了一种非常棒的方式实现,在故事一开始的时候,就生成永强王大拿两个实例,然后在别处用到了,直接调用其方法就行了,并不需要再新建对象。以下为C++实现代码:

#ifndef SINGLEINSTANCE_SINGINSTANCE_H
#define SINGLEINSTANCE_SINGINSTANCE_H
#include "iostream"
class YongQiang {
private:
    YongQiang(){
        std::cout << "YongQiang Is Ready\n";
    }
    static YongQiang* instance;
public:
    static YongQiang* callYongQiang() {
        return instance;
    }
    void sing_a_song() {
        std::cout << "Wo De Jia Xiang Zai Dong Bei\n";
    }
};
#endif //SINGLEINSTANCE_SINGINSTANCE_H

首先在.h文件中定义一个YongQiang的类,在私有函数中,定义其构造函数以及静态成员变量。然后定义一个获得YongQiang指针的公开函数,最后定义YongQiang表演的公开函数。

#include "SingInstance.h"
YongQiang* YongQiang::instance = new YongQiang();

在.cpp文件中,直接对永强进行生成操作。

int main() {
    YongQiang::callYongQiang()->sing_a_song();
    return 0;
}

在Main函数中,直接调用YongQiong的方法即可,不需要在每一处调用永强方法的时候,对永强进行维护。
以上代码输出:

YongQiang Is Ready
Wo De Jia Xiang Zai Dong Bei

可见,对于一个工程中的工具类模块类,只需要在整个程序中实例化一次的,即可利用单例模式。

以上单例模式为最简单形式,具体可以使用以下参考中的第二种:
https://blog.csdn.net/u011718663/article/details/115922357

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

手持电烙铁的侠客

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值