《Design Patterns》Bridge.积跬步系列

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会越来越大。因此将这两个角度分离单独管理,较少之间的耦合。


注:以上文章仅是个人总结,若有不当之处,望不吝赐教

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值