這是單例模式的例子嗎?如果不是這樣,那麼如果我們將這個類用作記錄器,會出現什麼問題。 (當然它不是一個完全靈活的記錄器)這是單身模式的例子嗎?
#include <iostream>
#include <fstream>
using namespace std;
class logger
{
private:
static ofstream myfile;
void openfile()
{
myfile.open ("example.txt");
}
void closefile()
{
myfile.close();
}
public:
void logit(string str)
{
if (myfile.is_open() == 1)
{
myfile << str << endl;
}
else
{
openfile();
myfile << str << endl;
}
}
};
ofstream logger::myfile;
int main()
{
logger l;
l.logit ("log from vod application");
logger l2;
l.logit ("log from guide application");
logger l3;
l1.logit ("log from application 3-1");
l1.logit ("log from application 3-2");
return 0;
}
任何討論將有所幫助。
Devesh
不,這不是因爲它有一個公共構造函數 –
它不是一個單身人士,你可能會遇到的問題是,如果文件在問題運行時被移除/移動/篡改,它將不會被重新創建。但是這個問題與其單例性或缺乏性沒有多大關係。 –
這或多或少是Meyer的singleton版本,其中唯一的實例是myfile,並且您沒有getInstance方法,而是直接訪問logit()。如果logit是靜態的 –