java设计模式(九)——桥接模式
2021-04-23 00:29
标签:action public 灵活 ace 微信 扩展 static java设计 建立 适配器模式( Adapter Pattern )又叫做变压器模式,它的功能是将一个类的接口变成客户端所期望 桥接模式的目的主要是通过组合而不是继承建立两个类之间的关系。 类图: 基本角色: 接口:IImplementor,实现维度的基本操作, 具体实现:ConcreteImplementor,实现维度的具体操作 抽象/桥:Abstraction,持有IImplementor接口,一般是抽象类 修正抽象:继承自Abstraction,对Abstraction的方法进行完善。 使用场景: 1、在抽象和具体实现之间需要增加更多的灵活性的场景。 生活实例:桥梁,物理机与虚拟机的网络桥接连接 案例: 生活中,我们会受到来qq,微信,钉钉等途径的消息,我们将这些信息进行分类:同学发来的信息,同事发来的信息,客户发来的信息 这两个维度,我们使用桥来建立联系: 类图: 接口:Imessage 其实现类:QqMessage 其实现类:WechatMessage 其实现类:DingdingMessage 抽象/桥:AbstractMessageBridge ,持有接口对象的具体实现 修正抽象:ClassmateMessage 修正抽象:ColleagueMessage 修正抽象:CustomerMessage 测试: 输出: 如果我们需要再建立一个信息途径,比如抖音信息,我们只需要写一个扩展即可。 优点: 提高了系统的扩展性,也符合开闭原则。 java设计模式(九)——桥接模式 标签:action public 灵活 ace 微信 扩展 static java设计 建立 原文地址:https://www.cnblogs.com/tdyang/p/13272719.html
的另一种接口,从而使原本因接口不匹配而导致无法在一起工作的两个类能够-起工作 ,属于结构型设
计模式。
2、 一个类存在多个独立变化的维度,而这多个维度都需要独立进行扩展。
public interface Imessage {
void send(String msg,String to);
}
public class QqMessage implements Imessage {
@Override
public void send(String msg, String to) {
System.out.printf("qq消息》》%s,%s \n",msg,to);
}
}
public class WechatMessage implements Imessage {
@Override
public void send(String msg, String to) {
System.out.printf("微信消息》》%s,%s \n",msg,to);
}
}
public class DingdingMessage implements Imessage {
@Override
public void send(String msg, String to) {
System.out.printf("钉钉消息》》%s,%s \n",msg,to);
}
}
public class AbstractMessageBridge implements Imessage{
public Imessage imessage;
public AbstractMessageBridge(Imessage imessage){
this.imessage = imessage;
}
@Override
public void send(String msg, String to) {
imessage.send(msg,to);
}
}
public class ClassmateMessage extends AbstractMessageBridge{
public ClassmateMessage(Imessage imessage) {
super(imessage);
}
@Override
public void send(String msg, String to) {
msg = "同学信息:" + msg ;
super.send(msg,to);
record();
}
public void record(){
String content = "同学肯定没问题";
}
}
public class ColleagueMessage extends AbstractMessageBridge {
public ColleagueMessage(Imessage imessage) {
super(imessage);
}
@Override
public void send(String msg, String to) {
msg = "同事信息:" + msg ;
super.send(msg,to);
record();
}
public void record(){
String content = "我想想";
}
}
public class CustomerMessage extends AbstractMessageBridge{
public CustomerMessage(Imessage imessage) {
super(imessage);
}
@Override
public void send(String msg, String to) {
msg = "客户信息:" + msg ;
super.send(msg,to);
record();
}
public void record(){
String content = "woc";
}
}
public class Test {
public static void main(String[] args) {
QqMessage qqMessage = new QqMessage();
WechatMessage wechatMessage = new WechatMessage();
DingdingMessage dingdingMessage = new DingdingMessage();
AbstractMessageBridge abstractMessageBridge = new ClassmateMessage(qqMessage);
AbstractMessageBridge abstractMessageBridge2 = new ClassmateMessage(wechatMessage);
AbstractMessageBridge abstractMessageBridge3 = new ClassmateMessage(dingdingMessage);
abstractMessageBridge.send("借我钱","小王");
abstractMessageBridge2.send("借我钱","小王");
abstractMessageBridge3.send("借我钱","小王");
}
}
qq消息》》同学信息:借我钱,小王
微信消息》》同学信息:借我钱,小王
钉钉消息》》同学信息:借我钱,小王
public class DouyinMessage implements Imessage {
@Override
public void send(String msg, String to) {
System.out.printf("抖音消息》》%s,%s \n",msg,to);
}
}