如果某个类管理了系统中唯一的某种资源,那么我们只能创建该类的一个实
例,此时用到 singleton
“
”
设计模式(后面为了简化将省略 设计模式 四个
字)就比较合适了。然而,如果不注意实现方法,就很有可能会让我们碰到一
些莫名其妙的错误。图 1 是经过简化所得到的一个实现错误的例子。
1.
main.c
2. 00001: #include <iostream>
3. 00002:
4. 00003: using namespace std;
5. 00004:
6. 00005: class singleton1_t
7. 00006: {
8. 00007: public:
9. 00008: static singleton1_t *instance ()
10. 00009: {
11. 00010: return &instance_;
12. 00011: }
13. 00012:
14. 00013: void count_increase () {count_ ++;}
15. 00014: int count () const {return count_;}
16. 00015:
17. 00016: private:
18. 00017: singleton1_t (): count_ (0) {}
19. 00018: ~singleton1_t () {}
20. 00019:
21. 00020: static singleton1_t instance_;
22. 00021: int count_;
23. 00022: };
24. 00023:
25. 00024: class singleton2_t
26. 00025: {
27. 00026: public:
28. 00027: static singleton2_t *instance ()
29. 00028: {
30. 00029: return &instance_;
31. 00030: }
32. 00031:
33. 00032: private:
34. 00033: singleton2_t () {singleton1_t::instance ()-
>count_increase ();}
35. 00034: ~singleton2_t () {}