吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 761|回复: 0
收起左侧

[讨论] 模板模式

[复制链接]
古月不傲 发表于 2020-11-15 12:15
本帖最后由 古月不傲 于 2020-11-15 12:17 编辑

[C++] 纯文本查看 复制代码
#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热心值 +1 收起 理由
yanyyuan + 1 热心回复!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-26 11:37

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表