桥接模式

为什么引入桥接模式

当我们定义某个多个功能的时候,其一,我们需要将各个功能独立,其二,每个功能之间可以进行组合,这个时候我们就需要桥接模式来帮助我们完成任务。

什么是桥接模式

将抽象和实现解耦,使的两者可以独立地变化。

核心思想

Abstraction:抽象画角色,用于定义出该角色的行为,同时保存一个实现的引用。

Implementor:实现的角色的接口,定义了一些行为和属性。

RefinedAbstraction:修正抽象化角色。

ConcreteImplementor:具体实现化角色。

具体案例

使用不同的加密算法在原有的加密算法上进行二次加密,使用桥接模式。

UML

代码

package com.dong.bridge;

public interface Encryption {
	public void Doencryption();
}

package com.dong.bridge;

public class DESEncryption implements Encryption {

	@Override
	public void Doencryption() {
		System.out.println("使用Des加密");
	}
}

package com.dong.bridge;

public class MD5Encryption implements Encryption {

	@Override
	public void Doencryption() {
		System.out.println("使用Md5加密");
	}
}

package com.dong.bridge;

public abstract class SecondaryEncryption {
	protected Encryption encryptionobj ;
	public void setEncryption(Encryption encryption) {
		this.encryptionobj = encryption;
	}
	public abstract void StartSecondEncryption();
}

package com.dong.bridge;

public class AES256 extends SecondaryEncryption {

	@Override
	public void StartSecondEncryption() {
		encryptionobj.Doencryption();
		System.out.println("AES256加密");
	}
}

package com.dong.bridge;

public class SHA512 extends SecondaryEncryption {

	@Override
	public void StartSecondEncryption() {
		encryptionobj.Doencryption();
		System.out.println("SHA512加密");
	}
}

优点

抽象和实现分离,对于具体的实现,扩充方便,实现细节对客户透明。

注意:桥接模式是对变化的封装,尽可能的把变化的因素封装到低层的逻辑单元中。