模板模式
本帖最后由 古月不傲 于 2020-11-15 12:17 编辑#include <iostream>
using namespace std;
// 模板模式
namespace template_pattern {
// 抽象界面类
class abstrct_interface
{
public:
void go() {
init();
dealwith_details();
}
void destroy() {
delete this;
}
protected:
virtual void init() = 0;
virtual void dealwith_details() = 0;
virtual ~abstrct_interface() {}
};
// 黑色炫酷风格
class dark_interface : public abstrct_interface
{
public:
virtual void init() override {
printf("init some params\n");
}
void dealwith_details() override {
printf("使界面是黑色的并且是炫酷风格的\n");
}
};
// 正常风格
class normal_interface : public abstrct_interface
{
public:
virtual void init() override {
printf("init some params\n");
}
void dealwith_details() override {
printf("使界面是正常风格的\n");
}
};
}
// 可以看出模板模式的好处 对于流程不变 细节上的一些变化 使用模板模式 只需构造一个子类即可 耦合性、扩展性 非常好
// 缺点:如果模式较多 需要创建不同的子类 代码量增大
int main(void)
{
using namespace template_pattern;
abstrct_interface *ab_normal = new normal_interface;
abstrct_interface *ab_dark = new dark_interface;
ab_dark->go();
ab_normal->go();
ab_normal->destroy();
ab_dark->destroy();
return 0;
}
// 总结
// 优点:扩展性,耦合性 非常好
// 缺点:只是细节的不用 需要new出一个新的子类
页:
[1]