桥接模式
为什么引入桥接模式
当我们定义某个多个功能的时候,其一,我们需要将各个功能独立,其二,每个功能之间可以进行组合,这个时候我们就需要桥接模式来帮助我们完成任务。
什么是桥接模式
将抽象和实现解耦,使的两者可以独立地变化。
核心思想
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加密");
}
}
优点
抽象和实现分离,对于具体的实现,扩充方便,实现细节对客户透明。
注意:桥接模式是对变化的封装,尽可能的把变化的因素封装到低层的逻辑单元中。