桥接模式(10)

一、认识桥接模式

1、概念

将抽象部分与它实现部分分离,使它们都可以独立地变化。

2、例子说明

从上面的例子我们可以看到,我们的手机可以从两个维度进行变化,一个是品牌,一个是内存。此时我们就可以通过桥接模式将这两个维度分离开来,每一个维度都可以独立扩展。比如说手机品牌,可以又出现了苹果、三星、锤子等等。内存方面又可以生产10G、16G的了。从专业的角度来看可以这样定义桥接模式:

“桥接模式是一种很实用的结构型设计模式,如果软件系统中某个类存在两个独立变化的维度,通过该模式可以将这两个维度分离出来,使两者可以独立扩展,让系统更加符合“单一职责原则”

3、类图
在这里插入图片描述
基本上意思就是这,也就是我们买手机的时候有两个维度可供我们选择:一个是品牌一个是内存。

(1)client:指的是我们买手机的人。

(2)Abstraction(抽象类):指的是手机抽象类

(3)Refined Abstraction(具体类):指的是具体手机品牌

(4)Implementor:在这里相当于手机的其他组件,内存

(5)ConcreteImplementor:具体的内存型号。

二、实现桥接模式

1.内存部分

public interface Memary {
	void showMeray();
}

public class MemaryFive implements Memary{
	@Override
	public void showMeray() {
		System.out.println("---five Memary---");
	}
}

public class MemaryTweleven implements Memary{
	@Override
	public void showMeray() {
		System.out.println("Memary 12");
	}
}

2.手机部分

public abstract class AbstructPhone {

	public  Memary memary;

	public AbstructPhone(Memary memary) {
		super();
		this.memary = memary;
	}
	
	abstract void showPhone();
}

public class ApplePhone extends AbstructPhone{

	public ApplePhone(Memary memary) {
		super(memary);
	}

	@Override
	void showPhone() {
		this.memary.showMeray();
		System.out.println("show ApplePhone");
	}

}

public class MiPhone extends AbstructPhone{

	public MiPhone(Memary memary) {
		super(memary);
	}

	@Override
	void showPhone() {
		this.memary.showMeray();
		System.out.println("show MiPhone");
	}

}

3.测试

public class Tests {
	public static void main(String[] args) {
		AbstructPhone phone = new MiPhone(new MemaryFive());
		phone.showPhone();
	}
}

三、分析桥接模式

1、为什么使用桥接模式不使用继承呢?

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

2、桥接模式的优点

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

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值