吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1513|回复: 7
收起左侧

[讨论] 桥接模式

  [复制链接]
古月不傲 发表于 2020-11-15 18:03
[C++] 纯文本查看 复制代码
#include <iostream>

using namespace std;

namespace bridage_pattern {

// 炫彩
class abstract_xuancai 
{
public:
    virtual void dealwith_details() = 0;
    virtual ~abstract_xuancai() {}  
};

// 黑色 飞龙在天
class dark_feilong : public abstract_xuancai
{
public:
    void dealwith_details() {
        printf("飞龙在天 炫彩\n");
    }
};

// 白色 白衣青龙
class white_qinglong : public abstract_xuancai
{
public:
    void dealwith_details() {
        printf("白色青龙 炫彩\n");
    }
};

// 不败拳王
class bubai_quanwang : public abstract_xuancai
{
public:
    void dealwith_details() {
        printf("不败拳王 炫彩\n");
    }
};

// 英雄联盟皮肤
class abstract_skin
{
public:
    virtual void switch_skin(abstract_xuancai *ab_xuancai) = 0;
    virtual ~abstract_skin() {}
protected:
    abstract_xuancai *m_ab_xuancai; // 包含炫彩对象 让他们有座桥
};

// 龙的传人
class longdechuanren : public abstract_skin
{
public:
    void switch_skin(abstract_xuancai *ab_xuancai) override {
        this->m_ab_xuancai = ab_xuancai;
        this->m_ab_xuancai->dealwith_details();
        printf("更换龙的传人\n");
    }
};

// 至高之拳
class wuyitao : public abstract_skin
{
public:
    void switch_skin(abstract_xuancai *ab_xuancai) override {
        this->m_ab_xuancai = ab_xuancai;
        this->m_ab_xuancai->dealwith_details();
        printf("更换至高之拳\n");
    }
};

// 地下拳王
class quanwang : public abstract_skin 
{
public:
    void switch_skin(abstract_xuancai *ab_xuancai) override {
        this->m_ab_xuancai = ab_xuancai;
        this->m_ab_xuancai->dealwith_details();
        printf("更换地下拳王\n");
    }
};
}

// 可以看出将两个有某种关联的对象 隔离起来 让它们各自发展 降低两者的耦合性 再让一个对象包含另一个对象让它们之间又可以联系起来,就好像为它们搭了一座桥~
int main(void)
{
    using namespace bridage_pattern;
    abstract_skin *skin_longdechuanren = new longdechuanren;
    abstract_skin *skin_quanwang = new quanwang;

    abstract_xuancai *xuancai_qinglong =  new white_qinglong;
    abstract_xuancai *xuancai_quanwang =  new bubai_quanwang;

    skin_longdechuanren->switch_skin(xuancai_qinglong);
    skin_quanwang->switch_skin(xuancai_quanwang);

    delete xuancai_quanwang;
    delete xuancai_qinglong;
    delete skin_quanwang;
    delete skin_longdechuanren;

    return 0;
}

// 总结
// 优点:各自发展,降低耦合,扩展容易
// 缺点:调用相对繁杂

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

大公无私 发表于 2020-11-15 18:53
虽然不知道干什么的 还支持一下
yxj10086 发表于 2020-11-15 19:43
mz3732 发表于 2020-11-15 20:08
公章你又胖了 发表于 2020-11-15 20:31


加油,虽然看不懂
233500 发表于 2020-11-15 20:37
就是把普通皮肤替换成  其他皮肤呗?
雨中独撑伞 发表于 2020-11-15 20:40
没看懂这个是干嘛的,只能说一句:“牛逼”
kez 发表于 2020-11-16 10:46
软考会考设计模式
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

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

GMT+8, 2024-11-26 12:00

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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