Java 设计模式系列(11) —— 桥接模式

作者简介:大家好,我是smart哥,前中兴通讯、美团架构师,现某互联网公司CTO

联系qq:184480602,加我进群,大家一起学习,一起进步,一起对抗互联网寒冬

学习必须往深处挖,挖的越深,基础越扎实! 

桥接模式

桥接模式的定义:
将抽象和实现解耦,是两者可以独立的变化

桥接模式的参与者:

  • Abstraction 抽象化角色: 该角色抽象化的给出定义,并保存一个对实现化对象的引用。
  • RefinedAbstaraction 修正抽象化角色:该角色扩展抽象化角色,它引用实现化角色并对抽象化角色进行修正。
  • Implementor 实现化角色:该角色给出实现化角色的接口,但不给出具体的实现
  • ConcreteImplementor 具体实现化角色:该角色对实现化角色接口中的方法进行具体的实现
桥接模式的简单示例

202306152220248031.png

实现化角色

    public interface Implementor {
    	public void executeA();
    	public void executeB();
    }

具体实现化角色

    public class ConcreteImplementor implements Implementor {
    
    	@Override
    	public void executeA() {
    		System.out.println("Role One execute A");		
    	}
    
    	@Override
    	public void executeB() {
    		System.out.println("Role One execute A");		
    	}
    
    }

抽象化角色

抽象化角色需要有一个实现化角色的引用,并在待修正的方法中队实现化角色的方法进行调用。

    public abstract class Abstaraction {
    	private Implementor impl;
    	public Abstaraction(Implementor imple) {
    		this.impl = imple;
    	}
        
    	public void doingSomething() {
    		this.impl.executeA();
    	}
    }

修正抽象化角色

在修正抽象化角色中,需要对原先抽象化角色中的一些方法进行修正。

    public class RefinedAbstraction extends Abstaraction {
    
    	public RefinedAbstraction(Implementor imple) {
    		super(imple);
    	}
    	
    	public void doingSomething() {
    		System.out.println("Refined doing Something");
    		super.doingSomething();
    	}
    
    }

调用场景示例

    public class Client {
    	public static void main(String[] args) {
    		Implementor impl = new ConcreteImplementor();
    		Abstaraction abst = new RefinedAbstraction(impl);
    		abst.doingSomething();
    	}
    
    }
桥接模式的优点和应用场景

桥接模式的优点:

  • 抽象和实现分离
  • 优秀的扩展能力
  • 实现细节对客户透明

桥接模式的应用场景

  • 不希望或不适用使用继承的场景
  • 接口或抽象不稳定的场景
  • 重用性要求较高的场景
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值