生活随笔
收集整理的這篇文章主要介紹了
《研磨设计模式》chap24 桥接模式bridge(2)场景应用
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
1. 模式應(yīng)用到場景中
public abstract class AbstractMessage {//持有一個實(shí)現(xiàn)部分的對象 protected MessageImplementor impl
;public AbstractMessage(MessageImplementor impl){this.impl = impl
;}public void sendMessage(String message,String toUser){this.impl.
send(message, toUser
);}
}
public class CommonMessage extends AbstractMessage{public CommonMessage(MessageImplementor impl) {super(impl
);} public void sendMessage(String message, String toUser) {//對于普通消息,什么都不干,直接調(diào)用父類的方法,把消息發(fā)送出去就可以了super.
sendMessage(message, toUser
);}
}
public class MessageEmail implements MessageImplementor{public void send(String message, String toUser) {System.out.
println("使用Email的方式,發(fā)送消息'"+message+
"'給"+toUser
);}}public interface MessageImplementor {public void
send(String message,String toUser
);
}
public class MessageMobile implements MessageImplementor{public void send(String message, String toUser) {System.out.
println("使用手機(jī)短消息的方式,發(fā)送消息'"+message+
"'給"+toUser
);}
}
public class MessageSMS implements MessageImplementor{public void send(String message, String toUser) {System.out.
println("使用站內(nèi)短消息的方式,發(fā)送消息'"+message+
"'給"+toUser
);}
}public class SpecialUrgencyMessage extends AbstractMessage{public SpecialUrgencyMessage(MessageImplementor impl) {super(impl
);}public void hurry(String messageId) {//執(zhí)行催促的業(yè)務(wù),發(fā)出催促的信息
}public void sendMessage(String message, String toUser) {message =
"特急:"+message
;super.
sendMessage(message, toUser
);//還需要增加一條待催促的信息
}
}
public class UrgencyMessage extends AbstractMessage{public UrgencyMessage(MessageImplementor impl) {super(impl
);}public void sendMessage(String message, String toUser) {message =
"加急:"+message
;super.
sendMessage(message, toUser
);}public Object watch(String messageId) {//獲取相應(yīng)的數(shù)據(jù),組織成監(jiān)控的數(shù)據(jù)對象,然后返回 return null
;}
}public static void main(String[] args) {//創(chuàng)建具體的實(shí)現(xiàn)對象MessageImplementor impl = new
MessageSMS();//創(chuàng)建一個普通消息對象AbstractMessage m = new
CommonMessage(impl
);m.
sendMessage("請喝一杯茶",
"小李");//創(chuàng)建一個緊急消息對象m = new
UrgencyMessage(impl
);m.
sendMessage("請喝一杯茶",
"小李");//創(chuàng)建一個特急消息對象m = new
SpecialUrgencyMessage(impl
);m.
sendMessage("請喝一杯茶",
"小李");//把實(shí)現(xiàn)方式切換成手機(jī)短消息,然后再實(shí)現(xiàn)一遍impl = new
MessageMobile();m = new
CommonMessage(impl
);m.
sendMessage("請喝一杯茶",
"小李");m = new
UrgencyMessage(impl
);m.
sendMessage("請喝一杯茶",
"小李");m = new
SpecialUrgencyMessage(impl
);m.
sendMessage("請喝一杯茶",
"小李");}
2. 總結(jié)
橋接模式的本質(zhì):分離抽象和實(shí)現(xiàn),分離抽象部分和實(shí)現(xiàn)部分
- 只有把抽象部分和實(shí)現(xiàn)部分分離開了,才能夠讓它們獨(dú)立地變化;
- 只有抽象部分和實(shí)現(xiàn)部分可以獨(dú)立地變化,系統(tǒng)才會有更好的可擴(kuò)展性和可維護(hù)性。
- 其他的好處:可以動態(tài)地切換實(shí)現(xiàn)、可以減少子類個數(shù)等。
總結(jié)
以上是生活随笔為你收集整理的《研磨设计模式》chap24 桥接模式bridge(2)场景应用的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。