Bridge:桥接模式
先代码
package h.l.demo.bridge;
/**
*
* @author: Is-Me-Hl
* @date: 2020年3月8日
* @Description: 单维度行为
*/
public abstract class Implementor {
public abstract void operation();
}
/**
*
* @author: Is-Me-Hl
* @date: 2020年3月8日
* @Description: 具体实现类A
*/
class ConcreteImplementorA extends Implementor{
@Override
public void operation() {
System.out.println("具体实现A的方法");
}
}
/**
*
* @author: Is-Me-Hl
* @date: 2020年3月8日
* @Description: 具体实现类B
*/
class ConcreteImplementorB extends Implementor{
@Override
public void operation() {
System.out.println("具体实现B的方法");
}
}
测试类:
package h.l.demo.bridge;
/**
*
* @author: Is-Me-Hl
* @date: 2020年3月8日
* @Description: 桥接模式
*/
public class Bridge {
public static void main(String[] args) {
Abstraction abstraction = new ConcreteAbstraction();
abstraction.setImplementor(new ConcreteImplementorA());
abstraction.operation();
System.out.println("-------------------");
abstraction.setImplementor(new ConcreteImplementorB());
abstraction.operation();
}
}
/**
*
* @author: Is-Me-Hl
* @date: 2020年3月8日
* @Description: 单维度主行为
*/
abstract class Abstraction{
protected Implementor implementor;
public void setImplementor(Implementor implementor){
this.implementor = implementor;
}
public abstract void operation();
}
/**
*
* @author: Is-Me-Hl
* @date: 2020年3月8日
* @Description: 具体单维度主类
*/
class ConcreteAbstraction extends Abstraction{
@Override
public void operation() {
implementor.operation();
}
}
测试结果:
后分析
- 个人建议:写代码是件幸福的事,So,do it
桥接模式,定义:将抽象部分与它的实现部分分离,是他们都可以独立的变化。通俗地理解就是由多个维度,其中一个维度作为抽象,其他维度作为实现,将实现注入到抽象中组合成一个整体。将原本NxM个类转化为1xN个类。
应用场景:实现的系统可能有多个角度分类,每一种分类都可能有变化,那么就将多种角度分离出来让他们独立变化,减少他们之间的耦合。
其他例子:参考自《大话设计模式》手机软件何时能统一:多种手机(N种)对应多种相同功能品牌不同的软件(M种),这样由于手机、软件的增多,这个算式NxM会越来越大。因此将这两个角度分离单独管理,较少之间的耦合。
注:以上文章仅是个人总结,若有不当之处,望不吝赐教