桥接模式

桥接模式

大家好,又见面了,我是全栈君,今天给大家准备了Idea注册码。

桥接模式是一种结构模式,在软件系统,某些类型的,因为它自己的逻辑。它具有变化的二维或更多维,使用的桥型可以很容易地进行修改的类型可以在多个方向上进行,而不会引入额外的复杂性。

桥梁模式的用意是”将抽象化(Abstraction)与实现化(Implementation)脱耦,使得二者能够独立地变化”,。桥接模式把依赖详细实现,提升为依赖抽象。来完毕对象和变化因素之间的低耦合,提高系统的可维护性和扩展性。

桥接模式的主要目的是将一个对象的变化与其他变化隔离开,让彼此之间的耦合度最低。

UML类图:

桥接模式

桥接模式中涉及到以下几个角色:

Abstraction类:定义了抽象类的接口,而且包括一个指向抽象类implementor的指针,在须要不同的实现方式的时候,仅仅须要传入不同的实现类的指针就能够了。

RefineAbstraction类:扩充Abstraction类的接口

Implementor类:定义实现类的接口,实现类被Abstraction以组合方式

ConcreteImplementor:实现Implementor类的接口,普通情况下有多个详细的类

C++实现代码例如以下:

class Abstration //抽象类定义接口
	{
	public:
		Abstration(Implementor* imp) :mImp(imp){}
		virtual ~Abstration(){}
		virtual void operation() = 0;
	protected:
		Implementor *mImp;	//使用组合的方式,实现了低耦合
	};
	class ReDefineAbstration :public Abstration		//
	{
	public:
		ReDefineAbstration(Implementor* imp) :Abstration(imp){}
		~ReDefineAbstration(){}
		void operation()
		{
			mImp->operationImplementor();
		}
	};
	class Implementor	//实现类的抽象基类
	{
	public:
		Implementor(){}
		virtual ~Implementor(){}
		virtual void operationImplementor() = 0;
	};
	class ConcreteImpelmentorA :public Implementor	//详细的实现类A
	{
	public:
		ConcreteImpelmentorA(){}
		~ConcreteImpelmentorA(){}
		void operationImplementor()
		{
			cout << "ConcreteImpelmentorA implements this interface" << endl;
		}
	};
	class ConcreteImpelmentorB :public Implementor	//详细的实现类B
	{
	public:
		ConcreteImpelmentorB(){}
		~ConcreteImpelmentorB(){}
		void operationImplementor()
		{
			cout << "ConcreteImpelmentorB implements this interface" << endl;
		}
	};
	void test()
	{
		Implementor *pImpA = new ConcreteImpelmentorA();
		Implementor *pImpB = new ConcreteImpelmentorB();
		Abstration *abstA = new ReDefineAbstration(pImpA);
		Abstration *abstB = new ReDefineAbstration(pImpB);
		abstA->operation();
		abstB->operation();
		delete pImpA;
		delete pImpB;
		delete abstA;
		delete abstB;
	}


桥接模式使得抽象和实现分离。在不同的类中定义。抽象接口类使用低耦合的组合方式包括了实现类,大大提高了系统的扩展性和维护性。


版权声明:本文博客原创文章,博客,未经同意,不得转载。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/117645.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 【Ubuntu 】Ubuntu 更换国内源—解决终端下载错误或速度慢的问题「建议收藏」

    【Ubuntu 】Ubuntu 更换国内源—解决终端下载错误或速度慢的问题「建议收藏」前言:安装好ubuntu双系统后,默认的软件更新源是国外的,在国内使用速度很慢,用”aptinstallxxx”安装软件时可能出现”网络不可达”、”你的网络需要认证吗”、”无法定位软件包”等错误,所以我们需要更换成国内的源,这样才能正常安装和更新软件。目录一、ubuntu16.04更换国内源二、ubuntu18.04更换国内源三、UbuntuROS更换国内源

  • jre环境变量配置_Windows系统配置Java环境变量

    jre环境变量配置_Windows系统配置Java环境变量一、到达环境变量配置页面从路径:桌面->控制面板->系统和安全->系统,到达系统,点击左侧“高级系统设置”,再点击“环境变量”。方法1:在桌面上右键“此电脑”,选择属性,直接到达系统(桌面无“此电脑”或“控制面板”的同学可选择方法2),然后点击“高级系统设置”,再点击“环境变量”,到达配置页面。123方法2:1点击窗口,选择设置2搜索并…

  • arping指令linux,arping命令详解「建议收藏」

    arping指令linux,arping命令详解「建议收藏」1版本arping主要就是查看ip的MAC地址及IP占用的问题。arping有两个版本,一个版本是ThomasHabets这个人写的,这个版本有个好处是可以arping,也就是说我们可以通过MAC地址得到IP;还有一个版本是Linuxiputilssuite的,这个版本就不能通过MAC地址,解析出IP地址了。可以使用arping-V查看系统的arping的版本[root@dev-…

  • POSTMAN自动生成接口文档_swagger自动生成接口文档

    POSTMAN自动生成接口文档_swagger自动生成接口文档介绍drf-spectacular是为DjangoRESTFramework生成合理灵活的OpenAPI3.0模式。它可以自动帮我们提取接口中的信息,从而形成接口文档,而且内容十分详细,再也不

  • 物联网网络架构_物联网技术有哪些

    物联网网络架构_物联网技术有哪些系列文章目录提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加例如:第一章Python机器学习入门之pandas的使用提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录系列文章目录前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结前言提示:这里可以添加本文要记录的大概内容:例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。提示:以下是本篇文章正文内容,下面案例

  • python命名规则标识符_python中有效的标识符

    python命名规则标识符_python中有效的标识符标识符规则1、由大小写字母、数字和下划线组成,只能以字母或者下划线开头。2、不能高阔除下划线以外的其他热河字符,如%……%¥#@3、不能包含换行符、空格和制表符等空白字符。4、不能使用Python中的关键字和约定俗成的名称,如print5、Python区分大小写。…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号