设计模式Before-after之单例模式
2014-03-17 13:55
246 查看
before.cxx
#include <iostream>
class OS {
public:
const char *getName(void) {
return "Microsoft Windows";
}
const char *getVersion(void) {
return "6.1.7601";
}
};
OS os;
void displayCurrentOSName(void) {
std::cout << "current OS name: " << os.getName() << std::endl;
}
void displayCurrentOSVersion(void) {
std::cout << "current OS version: " << os.getVersion() << std::endl;
}
int main(void) {
displayCurrentOSName();
displayCurrentOSVersion();
return 0;
}
after.cxx
#include <iostream>
class OS {
public:
static OS &getInstance(void) {
if (!instance) {
instance = new OS();
}
return *instance;
}
const char *getName(void) {
return "Microsoft Windows";
}
const char *getVersion(void) {
return "6.1.7601";
}
private:
OS(void) {}
static OS *instance;
};
OS *OS::instance = 0;
void displayCurrentOSName(void) {
OS &os = OS::getInstance();
std::cout << "current OS name: " << os.getName() << std::endl;
}
void displayCurrentOSVersion(void) {
OS &os = OS::getInstance();
std::cout << "current OS version: " << os.getVersion() << std::endl;
}
int main(void) {
displayCurrentOSName();
displayCurrentOSVersion();
return 0;
}
#include <iostream>
class OS {
public:
const char *getName(void) {
return "Microsoft Windows";
}
const char *getVersion(void) {
return "6.1.7601";
}
};
OS os;
void displayCurrentOSName(void) {
std::cout << "current OS name: " << os.getName() << std::endl;
}
void displayCurrentOSVersion(void) {
std::cout << "current OS version: " << os.getVersion() << std::endl;
}
int main(void) {
displayCurrentOSName();
displayCurrentOSVersion();
return 0;
}
after.cxx
#include <iostream>
class OS {
public:
static OS &getInstance(void) {
if (!instance) {
instance = new OS();
}
return *instance;
}
const char *getName(void) {
return "Microsoft Windows";
}
const char *getVersion(void) {
return "6.1.7601";
}
private:
OS(void) {}
static OS *instance;
};
OS *OS::instance = 0;
void displayCurrentOSName(void) {
OS &os = OS::getInstance();
std::cout << "current OS name: " << os.getName() << std::endl;
}
void displayCurrentOSVersion(void) {
OS &os = OS::getInstance();
std::cout << "current OS version: " << os.getVersion() << std::endl;
}
int main(void) {
displayCurrentOSName();
displayCurrentOSVersion();
return 0;
}
相关文章推荐
- 设计模式Before-after之享元模式
- 设计模式Before-after之适配器模式
- 设计模式Before-after之工厂方法模式
- 设计模式Before-after之桥接模式
- 设计模式Before-after之组合模式
- 设计模式Before-after之代理模式
- 设计模式Before-after之装饰模式
- 设计模式Before-after之简单工厂模式
- 全球著名平面设计Before&After视频教程合集中文字幕
- 设计模式Before-after之建造者模式
- Proxy设计模式
- 设计模式--多例模式
- [设计模式原则]第三回:接口隔离原则
- 设计模式——策略模式(Strategy)
- 设计模式六大原则---依赖倒置原则(DIP)
- 《C++ Qt 设计模式》8|15拼图 小游戏的简单实现。拜托,别乱点!
- 代理设计模式--Proxy
- 浅谈JAVA设计模式之——代理模式(proxy)
- JAVA设计模式初探之桥接模式
- 设计模式 外观模式 一键电影模式