2、桥接模式

模式解释

百度:

这种类型的设计模式属于结构型模式,它通过提供抽象化和实现化之间的桥接结构,来实现二者的交流调用。这种模式涉及到一个作为桥接的接口,使得实体类的功能独立于接口实现类,这两种类型的类可被结构化改变而互不影响。

主要解决的问题:

1、当一个类存在两个独立变化的维度,且这两个维度都需要扩展时,使用桥接模式

2、对于不希望使用继承或因多层次继承导致类数量急剧增加的系统,桥接模式特别适用

3、当系统需要在抽象化角色和具体化角色之间增加灵活性时,考虑使用桥接模式

可应用的场景:跨平台的视频播放器(不同平台 || 不同视频格式)

代码用法实例呈现

1、公司类+程序员类做桥接

2、公司类:大,中,小

程序员:c++,java,python

多种组合:大厂c++,小厂java,大厂java...

实现步骤:

1、纯虚函数 + 子类继承

2、对类构造限制 protect,即不对外开放权限

3、子类可使用父类的成员变量(包括protect 和 pulic)但禁止使用父类的私域!

源码呈现

公司类:

cpp 复制代码
#pragma once
#include<iostream>

class company
{

public:
	//company();
	virtual void money() {};

};
//*********  以下可以建立多个业务对象类  ******

class Big:public company
{

public:
	virtual void money() {
		std::cout << "大厂工作 2w" << std::endl;
	};

};
class Mid :public company
{

public:
	virtual void money() {
		std::cout << "中厂工作 1w" << std::endl;
	};
};
class Small :public company
{

public:
	virtual void money() {
		std::cout << "小厂工作 0.8w" << std::endl;
	};
};

程序员类:

cpp 复制代码
#pragma once
#include"company.h"
#include<iostream>

class human
{

protected:
	company* cp;

public:
	human(company* cp_) :cp(cp_) {  };

	virtual void tool() {};

};
//*********  以下可以建立多个业务对象类  ******

class CPlus : public human
{
public:
	CPlus(company* cp_) :human(cp_) {};
	virtual void tool() {
		std::cout << "使用 C++ " << std::endl;
		cp->money();
	};

};


class Java : public human
{
public:
	Java(company* cp_) :human(cp_) {};
	virtual void tool() {
		std::cout << "使用 Java " << std::endl;
		cp->money();

	};

};
class Python : public human
{
public:
	Python(company* cp_) :human(cp_) {};
	virtual void tool() {
		std::cout << "使用 Python " << std::endl;
		cp->money();

	};

};

main 函数调用:

cpp 复制代码
#include<iostream>
#include"company.h"
#include"human.h"


using namespace std;


int main(int argv,char**argc) {



	Big big;
	Mid mid;
	Small small;

	CPlus boy1(&big);
	Java boy2(&big);
	Python boy3(&small);


	boy1.tool();
	boy2.tool();
	boy3.tool();

	return 0;
}

结果展示:

相关推荐
汉克老师21 小时前
第十四届蓝桥杯青少组C++国赛[2023.5.28]第二部分编程题(4、 数独填数)
c++·蓝桥杯·蓝桥杯c++·c++蓝桥杯
闻缺陷则喜何志丹21 小时前
【线段树 懒删除堆】P12372 [蓝桥杯 2022 省 Python B] 最优清零方案|普及+
数据结构·c++·线段树·懒删除堆
闻缺陷则喜何志丹21 小时前
【 线段树】P12347 [蓝桥杯 2025 省 A 第二场] 栈与乘积|普及+
数据结构·c++·蓝桥杯·线段树·洛谷
徐归阳21 小时前
数组本身的深入解析
数据结构·c++·算法
白榆!21 小时前
string类的实现
开发语言·c++·算法
励志五个月成为嵌入式糕手21 小时前
0904 类的继承
开发语言·c++
睡不醒的kun1 天前
leetcode算法刷题的第二十六天
数据结构·c++·算法·leetcode·职场和发展·贪心算法
一匹电信狗1 天前
【Linux我做主】细说进程等待
linux·运维·服务器·c++·ubuntu·小程序·开源
玖釉-1 天前
OpenGL视图变换矩阵详解:从理论推导到实战应用
c++·图形渲染
fangzelin51 天前
基础排序--冒泡--选择--插入
数据结构·c++·算法