真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

java中的橋接模式怎么用

本篇內(nèi)容主要講解“java中的橋接模式怎么用”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實(shí)用性強(qiáng)。下面就讓小編來帶大家學(xué)習(xí)“java中的橋接模式怎么用”吧!

創(chuàng)新互聯(lián)專注于企業(yè)全網(wǎng)整合營銷推廣、網(wǎng)站重做改版、彰武網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、HTML5建站、商城網(wǎng)站建設(shè)、集團(tuán)公司官網(wǎng)建設(shè)、成都外貿(mào)網(wǎng)站建設(shè)公司、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性價(jià)比高,為彰武等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。

1. 模式的定義

消息分為普通消息,加急消息,特急消息多種,不同的消息類型,業(yè)務(wù)功能處理是不一樣的,現(xiàn)在要實(shí)現(xiàn)這樣發(fā)送提示消息的功能,該如何實(shí)現(xiàn)呢?

如何才能既實(shí)現(xiàn)功能,又能靈活地?cái)U(kuò)展呢?

橋接模式的定義: 
將抽象部分與它的實(shí)現(xiàn)部分分離,使它們都可以獨(dú)立地變化。

2. UML圖

java中的橋接模式怎么用 
Abstraction:抽象部分的接口,通常在這個(gè)對象中,要維護(hù)一個(gè)實(shí)現(xiàn)部分的對象引用,抽象對象里面的方法,需要調(diào)用實(shí)現(xiàn)部分的對象來完成。

RefinedAbstraction:擴(kuò)展抽象部分的接口,通常在這些對象中,定義跟實(shí)際業(yè)務(wù)相關(guān)的方法。

Implementor:定義實(shí)現(xiàn)部分的接口,通常由Implementor接口提供基本的操作,Abstraction中定義的是基于這些基本操作的業(yè)務(wù)方法

concreteImplementor:真正實(shí)現(xiàn)Implementor接口的對象

//抽象部分就是各個(gè)消息的類型所對應(yīng)的功能,而實(shí)現(xiàn)部分就是各種發(fā)送消息的方式/**

 * 實(shí)現(xiàn)發(fā)送消息的統(tǒng)一接口

 */public interface MessageImplementor {

    /**

     * 發(fā)送消息

     * @param message 要發(fā)送的消息內(nèi)容

     * @param toUser 把消息發(fā)送的目的人員

     */

    public void send(String message,String toUser);

}/**

 * 以站內(nèi)短消息的方式發(fā)送消息

 */public  class MessageSMS implements MessageImplementor{

    public void send(String message, String toUser) {

        System.out.println("使用站內(nèi)短消息的方式,發(fā)送消息'"+message+"'給"+toUser);

    }

}/**

 * 以Email的方式發(fā)送消息

 */public class MessageEmail implements MessageImplementor{

    public void send(String message, String toUser) {

        System.out.println("使用Email的方式,發(fā)送消息'"+message+"'給"+toUser);

    }

}/**

 * 以手機(jī)短消息的方式發(fā)送消息

 */public  class MessageMobile implements MessageImplementor{

    public void send(String message, String toUser) {

        System.out.println("使用手機(jī)短消息的方式,發(fā)送消息'"+message+"'給"+toUser);

    }

}/**

 * 抽象的消息對象

 */public abstract class AbstractMessage {

    /**

     * 持有一個(gè)實(shí)現(xiàn)部分的對象

     */

    protected MessageImplementor impl;    /**

     * 構(gòu)造方法,傳入實(shí)現(xiàn)部分的對象 

     * @param impl 實(shí)現(xiàn)部分的對象

     */

    public AbstractMessage(MessageImplementor impl){        this.impl = impl;

    }    /**

     * 發(fā)送消息,轉(zhuǎn)調(diào)實(shí)現(xiàn)部分的方法

     * @param message 要發(fā)送的消息內(nèi)容

     * @param toUser 把消息發(fā)送的目的人員

     */

    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 UrgencyMessage extends AbstractMessage{

    public UrgencyMessage(MessageImplementor impl) {        super(impl);

    }    public void sendMessage(String message, String toUser) {

        message = "加急:"+message;        super.sendMessage(message, toUser);

    }    /**

     * 監(jiān)控某消息的處理過程

     * @param messageId 被監(jiān)控的消息的編號

     * @return 包含監(jiān)控到的數(shù)據(jù)對象,這里示意一下,所以用了Object

     */

    public Object watch(String messageId) {        //獲取相應(yīng)的數(shù)據(jù),組織成監(jiān)控的數(shù)據(jù)對象,然后返回       

        return null;

    }   

}/**

 * 特急消息

 */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 Client {

    public static void main(String[] args) {        //創(chuàng)建具體的實(shí)現(xiàn)對象

        MessageImplementor impl = new MessageSMS();        //創(chuàng)建一個(gè)普通消息對象

        AbstractMessage m = new CommonMessage(impl);

        m.sendMessage("請喝一杯茶", "小李");        //創(chuàng)建一個(gè)緊急消息對象

        m = new UrgencyMessage(impl);

        m.sendMessage("請喝一杯茶", "小李");        //創(chuàng)建一個(gè)特急消息對象

        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("請喝一杯茶", "小李");

    }

}

3. 研磨設(shè)計(jì)模式

1) 什么是橋接?為何需要橋接?如何橋接?

  • 所謂橋接,通俗點(diǎn)就是在不同的東西之間搭一個(gè)橋,讓它們能夠連接起來,可以相互通訊和使用。

  • 為被分離了的抽象部分和實(shí)現(xiàn)部分來搭橋,只要讓抽象部分擁有實(shí)現(xiàn)部分的接口對象,就橋接上了

  • 為了達(dá)到讓抽象部分和實(shí)現(xiàn)部分都可以獨(dú)立變化的目的

  • 抽象部分的實(shí)現(xiàn)通常是需要調(diào)用實(shí)現(xiàn)部分的功能來實(shí)現(xiàn)的

2) 繼承是擴(kuò)展對象功能的一種常見手段,通常情況下,繼承擴(kuò)展的功能變化維度都是一維的。

3)由誰來橋接: 
就是誰來負(fù)責(zé)創(chuàng)建抽象部分和實(shí)現(xiàn)部分的關(guān)系,即誰來負(fù)責(zé)創(chuàng)建Implementor對象,并把它設(shè)置到抽象部分的對象中去。 
- 由客戶端負(fù)責(zé)創(chuàng)建Implementor,并在創(chuàng)建抽象部分對象的時(shí)候,把它設(shè)置到抽象部分的對象中 
- 可以抽象工廠或簡單工廠來選擇創(chuàng)建具體的Implementor對象,抽象部分的類可以通過工廠的方法來獲取Implementor對象 
- 使用IOC/DI容器來創(chuàng)建具體的Implementor對象,并注入到Abstraction中

4) 典型的例子 
JDBC:抽象部分是JDBC的API,具體實(shí)現(xiàn)式驅(qū)動(dòng)程序 
java中的橋接模式怎么用

5)橋接模式的本質(zhì):分離抽象和實(shí)現(xiàn) 
只有把抽象部分和實(shí)現(xiàn)部分分離開,才能夠讓它們獨(dú)立地變化。

到此,相信大家對“java中的橋接模式怎么用”有了更深的了解,不妨來實(shí)際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!


文章標(biāo)題:java中的橋接模式怎么用
網(wǎng)頁地址:http://weahome.cn/article/pgcigd.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部