古月不傲 发表于 2020-11-15 12:15

模板模式

本帖最后由 古月不傲 于 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]
查看完整版本: 模板模式