我們提供的服務(wù)有:成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站建設(shè)、外貿(mào)網(wǎng)站建設(shè)、微信公眾號(hào)開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、南豐ssl等。為上1000+企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的南豐網(wǎng)站制作公司
橋接模式(Bridge Pattern)又稱作橋梁模式
,指將抽象部分與具體實(shí)現(xiàn)部分分離,使它們都可以獨(dú)立地變化,屬于結(jié)構(gòu)型設(shè)計(jì)模式。
橋接模式的主要目的是通過組合的方式建立兩個(gè)類之間的聯(lián)系,而不是繼承,但又類似多重繼承方案。
橋接 模式的核心在于把抽象與實(shí)現(xiàn)解耦。這里的抽象與實(shí)現(xiàn)指的是兩種獨(dú)立變化的維度。
(1)模式的結(jié)構(gòu)
主要角色如下:
優(yōu)點(diǎn):
缺點(diǎn):
代碼如下:
public class BridgePattern {public static void main(String[] args) {ConcreteIImplementorA iImplementorA = new ConcreteIImplementorA();
// 組合/聚合實(shí)現(xiàn)
RefinedAbstraction abstraction = new RefinedAbstraction(iImplementorA);
abstraction.operation();
}
}
// 抽象角色
abstract class Abstraction {// 實(shí)現(xiàn)角色的引用
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");
}
}
// 實(shí)現(xiàn)角色
interface IImplementor{void operationImpl();
}
// 具體實(shí)現(xiàn)角色
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");
}
}
三、模式的應(yīng)用實(shí)例(1)消息-實(shí)現(xiàn)角色
public interface IMessage {void send(String message, String toUser);
}
(2)郵件消息-具體實(shí)現(xiàn)角色
public class EmailMessage implements IMessage {@Override
public void send(String message, String toUser) {System.out.println("使用郵件消息發(fā)送:" + message + " 給 " + toUser);
}
}
(3)短信消息-具體實(shí)現(xiàn)角色
public class SMSMessage implements IMessage {@Override
public void send(String message, String toUser) {System.out.println("使用短信消息發(fā)送:" + message + " 給 " + toUser);
}
}
(4)橋接抽象角色
public class AbstractMessage {protected IMessage iMessage;
public AbstractMessage(IMessage iMessage) {this.iMessage = iMessage;
}
// 發(fā)送消息,委派給實(shí)現(xiàn)部分的方法
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) {// 普通消息,直接調(diào)用父類發(fā)送即可
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)測(cè)試
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("野王請(qǐng)求支援", "趙云");
}
– 求知若饑,虛心若愚。
你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購,新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧