桥接模式

桥接模式

大家好,又见面了,我是全栈君,今天给大家准备了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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • osx安装失败_OSX

    osx安装失败_OSX目录1.MacPorts是什么2.MacPorts安装方法2.1使用安装器安装2.2源码安装2.3同步repositorytree和获取最新package3.更新失败的解决方法4.ports使用…

    2022年9月14日
    2
  • 留言板的代码_留言板留言大全短句

    留言板的代码_留言板留言大全短句<!DOCTYPEhtml><htmllang=”en”><head><metacharset=”UTF-8″><metahttp-equiv=”X-UA-Compatible”content=”IE=edge”><metaname=”viewport”content=”width=device-width,initial-scale=1.0″><title>D.

    2022年10月21日
    3
  • 内外网同时使用route add

    内外网同时使用route add使用routeadd添加路由,使两个网卡同时访问内外网routeadd命令格式:route[-f][-p][Command][Destination][maskNetmask][Gateway][metricMetric][ifInterface] 通过配置电脑的静态路由来实现同时访问内外网的。电脑的网络IP配置不用变,两个网卡都按照正常配置(都配置IP地址、子网掩码、网…

    2022年8月12日
    10
  • Anycast

    AnycastAliDNS(www.alidns.com)近期上线。看到同事说更换localDNS后,访问淘宝明显快了。以我当前的理解能力,认为无非是快在DNS解析这一步上,缩短的时间应该在毫秒级别,而浏览器与淘宝集群之间的延时应该不会有变化。但试了后,果然明显感觉变快了。好奇心驱使,学习了下Anycast技术。当然,AliDNS还采用了集群缓存共享的设计…

    2022年5月24日
    98
  • ArrayList 扩容详解,扩容原理[通俗易懂]

    ArrayList 扩容详解,扩容原理[通俗易懂]ArrayList扩容详解,扩容原理ArrayList是基于数组实现的,是一个动态数组,其容量能自动增长。ArrayList不是线程安全的,只能用在单线程环境下。实现了Serializable接口,因此它支持序列化,能够通过序列化传输;实现了RandomAccess接口,支持快速随机访问,实际上就是通过下标序号进行快速访问;实现了Cloneable接口,能被克隆。动态扩容一初始化…

    2022年6月12日
    36
  • 5分钟商学院之个人篇–习惯与素养

    1.高效能人士的习惯思维转换如果只想发生较小的变化,专注于自己的态度和行为;但如果想发生实质性的变化,就需要思维转换,改变理解世界的方式思维转换就是改变人们理解世界的方式,怎样才能打开思维转换

    2021年12月30日
    45

发表回复

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

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