博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java设计模式----桥接模式
阅读量:5255 次
发布时间:2019-06-14

本文共 1447 字,大约阅读时间需要 4 分钟。

应用场景:抽象部分与实现部分分离,使它们都可以独立的变化。

创建一个抽象类:

package bridge;public  abstract class Abstraction {	protected Interfacor interfacor;	public Abstraction(Interfacor interfacor){		this.interfacor=interfacor;	}	public void opration(){		interfacor.opration();	}}

 创建一个接口:

package bridge;public interface Interfacor {	public void opration();}

 

创建两个接口实现:

package bridge;public class InterfacorImpl1 implements Interfacor{	@Override	public void opration() {		System.out.println("实现A功能");	}}

 

package bridge;public class InterfacorImpl2 implements Interfacor{	@Override	public void opration() {		System.out.println("实现功能B");	}}

 

 创建子类实现抽象类:

package bridge;public class RefineAbstraction extends Abstraction{	public RefineAbstraction(Interfacor interfacor) {		super(interfacor);	}	public void RefineOperation(){		System.out.println("子类重新定义");	}}

 

测试:

package bridge;public class Test {	public static void main(String[] args) {		Interfacor interfacor=new InterfacorImpl1();		RefineAbstraction abstraction=new RefineAbstraction(interfacor);		abstraction.opration();		abstraction.RefineOperation();	}}

 

结果:

实现A功能子类重新定义

 这样把抽象和实现分离,需要哪个实现就调哪个实现。

再来个应用场景:

 

这上边有两个维度,一个是抽象的消息(普通消息,加急消息,特级消息),另一个维度是具体的实现(email,手机短消息,站内短消息)

这两个维度有九种不同的可能性。现在出现问题的根本原因,就在于消息的抽象和实现是混杂在一起的,这就导致了,一个纬度的变化,会引起另一个纬度进行相应的变化,从而使得程序扩展起来非常困难。要想解决这个问题,就必须把这两个纬度分开,也就是将抽象部分和实现部分分开,让它们相互独立,这样就可以实现独立的变化,使扩展变得简单。

那么如何实现呢?

根据上面的方法。

首先也是定义抽象接口。

再定义抽象类

再实现抽象接口

再继承抽象类

 

转载于:https://www.cnblogs.com/JAYIT/p/5007804.html

你可能感兴趣的文章
LiveBinding应用 dataBind 数据绑定
查看>>
Linux重定向: > 和 &> 区别
查看>>
nginx修改内核参数
查看>>
C 筛选法找素数
查看>>
TCP为什么需要3次握手与4次挥手(转载)
查看>>
IOC容器
查看>>
Windows 2003全面优化
查看>>
URAL 1002 Phone Numbers(KMP+最短路orDP)
查看>>
web_day4_css_宽度
查看>>
electron入门心得
查看>>
格而知之2:UIView的autoresizingMask属性探究
查看>>
Spring3.0 AOP 具体解释
查看>>
我的Hook学习笔记
查看>>
EasyUI DataGrid 中字段 formatter 格式化不起作用
查看>>
海量数据存储
查看>>
js中的try/catch
查看>>
[导入]玫瑰丝巾!
查看>>
自动从网站上面下载文件 .NET把网站图片保存到本地
查看>>
【识记】 域名备案
查看>>
STL uva 11991
查看>>