400 028 6601

建站动态

根据您的个性需求进行定制 先人一步 抢占小程序红利时代

桥接设计模式-创新互联

一、桥接模式 1、定义

桥接模式(Bridge Pattern)又称作桥梁模式,指将抽象部分与具体实现部分分离,使它们都可以独立地变化,属于结构型设计模式。

我们提供的服务有:成都网站设计、成都网站建设、外贸网站建设、微信公众号开发、网站优化、网站认证、南丰ssl等。为上1000+企事业单位解决了网站和推广的问题。提供周到的售前咨询和贴心的售后服务,是有科学管理、有技术的南丰网站制作公司

桥接模式的主要目的是通过组合的方式建立两个类之间的联系,而不是继承,但又类似多重继承方案。
桥接 模式的核心在于把抽象与实现解耦。这里的抽象与实现指的是两种独立变化的维度。

2、结构

(1)模式的结构

主要角色如下:

3、优缺点

优点:

缺点:

4、使用场景5、在框架源码中使用二、模式的通用实现

代码如下:

public class BridgePattern {public static void main(String[] args) {ConcreteIImplementorA iImplementorA = new ConcreteIImplementorA();

		// 组合/聚合实现
		RefinedAbstraction abstraction = new RefinedAbstraction(iImplementorA);
		abstraction.operation();
	}
}

// 抽象角色
abstract class Abstraction {// 实现角色的引用
	protected IImplementor iImplementor;

	public Abstraction(IImplementor iImplementor) {this.iImplementor = iImplementor;
	}

	public void operation(){iImplementor.operationImpl();
	}
}

// 修正角色
class RefinedAbstraction extends Abstraction{public RefinedAbstraction(IImplementor iImplementor) {super(iImplementor);
	}

	@Override
	public void operation() {super.operation();
		// do something
		System.out.println("RefinedAbstraction do something");
	}
}

// 实现角色
interface IImplementor{void operationImpl();
}

// 具体实现角色
class  ConcreteIImplementorA implements IImplementor{@Override
	public void operationImpl() {System.out.println("ConcreteIImplementorA----do");
	}
}

class  ConcreteIImplementorB implements IImplementor{@Override
	public void operationImpl() {System.out.println("ConcreteIImplementorB----do");
	}
}

在这里插入图片描述

三、模式的应用实例

(1)消息-实现角色

public interface IMessage {void send(String message, String toUser);
}

(2)邮件消息-具体实现角色

public class EmailMessage implements IMessage {@Override
	public void send(String message, String toUser) {System.out.println("使用邮件消息发送:" + message + " 给 " + toUser);
	}
}

(3)短信消息-具体实现角色

public class SMSMessage implements IMessage {@Override
	public void send(String message, String toUser) {System.out.println("使用短信消息发送:" + message + " 给 " + toUser);
	}
}

(4)桥接抽象角色

public class AbstractMessage {protected IMessage iMessage;

    public AbstractMessage(IMessage iMessage) {this.iMessage = iMessage;
    }

    // 发送消息,委派给实现部分的方法
    public void sendMessage(String message, String toUser) {this.iMessage.send(message, toUser);
    }
}

(5)具体普通消息-修正角色

public class NomalMessage extends AbstractMessage {public NomalMessage(IMessage iMessage) {super(iMessage);
	}

	@Override
	public void sendMessage(String message, String toUser) {// 普通消息,直接调用父类发送即可
		super.sendMessage(message, toUser);
	}
}

(6)具体加急消息-修正角色

public class UrgencyMessage extends AbstractMessage {public UrgencyMessage(IMessage iMessage) {super(iMessage);
	}

	@Override
	public void sendMessage(String message, String toUser) {message = "【加急】" + message;
		super.sendMessage(message, toUser);
		// do something
	}
}

(7)测试

public static void main(String[] args) {IMessage emailMessage = new EmailMessage();
		AbstractMessage nomalMessage = new NomalMessage(emailMessage);
		nomalMessage.sendMessage("野王求让buff", "赵云");

		IMessage smsMessage = new SMSMessage();
		AbstractMessage urgencyMessage = new UrgencyMessage(emailMessage);
		urgencyMessage.sendMessage("野王请求支援", "赵云");
	}

在这里插入图片描述

– 求知若饥,虚心若愚。

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧


当前题目:桥接设计模式-创新互联
本文URL:http://www.bluegullmedia.com/article/dicjjh.html

其他资讯

让你的专属顾问为你服务

0.0403s