23种设计模式之桥接模式-Java语言-(六)

基本介绍

  1. 桥接模式(Bridge模式)是指:将实现与抽象放在两个不同的类层次中,使两个层次可以独立改变。
  2. 是一种结构型设计模式
  3. Bridge模式基于类的最小设计原则,通过使用封装、聚合及继承等行为让不同的类承担不同的职责。它的主要特点是把抽象(Abstraction)与行为实现(Implementation)分离开来,从而可以保持各部分的独立性以及应对他们的功能扩展
    简单来说:它是将对象进行进一步的分解,以实现解耦的目的。
    在这里插入图片描述
    举个栗子来说:手机有内存属性和品牌属性,我们将这个类中的两个独立变化的维度分离开来,使两者可以独立扩展,让系统更加符合“单一职责原则”。
  • 画UML类图展示如下:
    在这里插入图片描述
    也就是我们买手机的时候有两个维度可以供我们选择:一个是品牌,一个是内存。

代码实现

角色展示:

  1. client:指的是我们买手机的人
  2. Abstraction(抽象类):指的是手机抽象类
  3. Refined Abstraction(具体类):指的是具体手机品牌
  4. Implementor:在这里相当于手机的其它组件,内存
  5. ConcreteImplementor:具体的内存型号

代码展示:

  1. 定义Implementor,这里定义手机内存接口
public interface Memory{
	public void showMemory();
}
  1. 定义ConcreteImplementor,这里指具体的内存
    内存这里定义的两种,一种是4G,一种是8G。
// 4G的内存
public class Memory4G implements Memory{
	@Override
	public void showMemory(){
		System.out.println("手机安装了4G的内存");
	}
}

//8G的内存
public class Memory8G implements Memory{
	@Override
	public void showMemory(){
		System.out.println("手机安装了8G的内存");
	}
}
  1. 定义Abstraction手机抽象类
public abstract class Phone{
	public Memory phoneMemory;
	
	public void setMemory(Memory memory){
		this.phoneMemory=memory;
	}
	public abstract void buyPhone();
}
  1. 定义Refined Abstraction(具体的手机品牌)
  • 定义华为手机
public class Huawei extends Phone{
	@Override
	public void buyPhone(){
		//PhoneMemory是继承父类的一个属性,可以直接使用
		phoneMemory.showMemory();
		System.out.println("华为手机,111");
	}
}
  • 定义小米手机
public class Xiaomi extends Phone{
	@Override
	public void buyPhone(){
		//PhoneMemory是继承父类的一个属性,可以直接使用
		phoneMemory.showMemory();
		System.out.println("x小米手机,222");
	}
}
  1. 测试
public class Client{
	//让华为手机搭配8G内存
	Phone huawei=new Huawei();
	huawei.setMemory(new Memory8G());
	huawei.buyPhone();
	
	//让小米搭配4G的内存
	Phone xiaomi=new Mi();
	mi.setMemory(new Memory4G());
	mi.buyPhone();
}

桥接模式总结

1. 为什么使用桥接模式不使用继承呢?
继承是一种强耦合关系,子类与父类有非常紧密的依赖关系,父类的任何变化 都会导致子类发生变化。因此才使用桥接模式,使用了桥接模式之后,我们的两个维度就像桥梁一样被链接了起来。体现了松耦合的特性。

2、桥接模式的优点

(1)分离抽象和实现部分:把手机、内存抽象出来。实现与之分离。

(2)松耦合:两个维度分开

(3)单一职责原则:每个维度各干各的活

文章来自:https://baijiahao.baidu.com/s?id=1639383166201396225&wfr=spider&for=pc

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值