桥接模式

桥接模式

大家好,又见面了,我是全栈君,今天给大家准备了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;
	}


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


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

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

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Google资深工程师深度讲解Go语言-Goroutine并发编程(九)[通俗易懂]

    Google资深工程师深度讲解Go语言-Goroutine并发编程(九)

    2022年2月16日
    46
  • NC65 自由报表开发「建议收藏」

    NC65 自由报表开发「建议收藏」动态建模平台—->报表平台如果找不到?则登录账套管理员分配集团管理员的权限可参考下面链接https://blog.csdn.net/qq_19004705/article/details/119889910概述自由报表:是可利用报表分析工具设计出固定格式的、具有强大分析功能的分析型报表,可对报表数据进行各种自由分析。提供对数据集的复杂分析类设计功能,得到可适应企业决策人员使用的分析型报表及报表数据;同时也提供对已存在业务系统数据、采集报表数据,通过数据集进行随意组合查..

    2022年8月30日
    0
  • tiptop开发webservice详细步骤

    tiptop开发webservice详细步骤4gl,webservice,tiptop,t100

    2022年7月12日
    18
  • 零拷贝详解_深拷贝和浅拷贝如何实现

    零拷贝详解_深拷贝和浅拷贝如何实现一、概念1、用户态与内核态⽤户态和内核态是操作系统的两种运⾏状态。(1)内核态:处于内核态的CPU可以访问任意的数据,包括外围设备,⽐如⽹卡、硬盘等,处于内核态的CPU可以从⼀个程序切换到另外⼀个程序,并且占⽤CPU不会发⽣抢占情况,⼀般处于特权级0的状态我们称之为内核态。(2)⽤户态:处于⽤户态的CPU只能受限的访问内存,并且不允许访问外围设备,⽤户态下的CPU不允许独占,也就是说CPU能够被其他程序获取。注意:1)为什么要有⽤户态和内核态呢?  这个主要是访问能⼒的限制

    2022年9月13日
    0
  • Activity工作流引擎学习笔记(二)

    Activity工作流引擎学习笔记(二)核心APIProcessEngine说明:1) 在Activiti中最核心的类,其他的类都是由他而来。2) 产生方式:在前面看到了两种创建ProcessEngine(流程引擎)的方式,而这里要简化很多,调用ProcessEngines的getDefaultProceeEngine方法时会自动加载classpath下名为activiti.cfg.xml文件。3) 可以产生R

    2022年7月11日
    19
  • SpringBoot面试题及答案整理

    SpringBoot面试题及答案整理什么是SpringBootSpringBoot建立spring框架之上,使用spring启动,帮我们避免了大量的配置。因此,SpringBoot可以帮助我们以最少的工作量,更加健壮地使用现有的Spring功能。SpringBoot有哪些优点?1、减少开发,测试时间和努力。2、使用JavaConfig有助于避免使用XML。3、避免大量的Maven导入和各种版本冲突。4、提供意见发展方法。5、通过提供默认值快速开始开发。6、没有单独的Web服

    2022年5月11日
    46

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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