輕松掌握J(rèn)ava橋接模式
定義:將抽象部分與實(shí)現(xiàn)部分分離,使它們都可以獨(dú)立的變化。
特點(diǎn):橋接模式基于類的最小設(shè)計(jì)原則,通過(guò)使用封裝,聚合以及繼承等行為來(lái)讓不同的類承擔(dān)不同的責(zé)任。它的主要特點(diǎn)是把抽象(abstraction)與行為實(shí)現(xiàn)(implementation)分離開(kāi)來(lái),從而可以保持各部分的獨(dú)立性以及應(yīng)對(duì)它們的功能擴(kuò)展。
企業(yè)級(jí)開(kāi)發(fā)和常用框架中的應(yīng)用:多繼承的結(jié)構(gòu)
只是從定義理解橋接模式,很難理清它的作用,下面舉個(gè)例子來(lái)說(shuō)明:
電腦城賣(mài)電腦,電腦種類分了平板電腦,筆記本電腦,臺(tái)式電腦;電腦品牌又分了聯(lián)想,戴爾,華碩,神州。如果從多繼承的角度建類,則需要先建一個(gè)電腦抽象類,然后平板電腦、筆記本電腦、臺(tái)式電腦分別繼承抽象電腦類,不同的電腦品牌又要分別繼承這些電腦分類的類,然后實(shí)現(xiàn)方法,這樣,如果要添加一個(gè)電腦種類則不同的電腦品牌還要分別繼承該類,或者添加一個(gè)電腦品牌,則又要分別繼承不同的分類,這樣就是創(chuàng)建變得復(fù)雜化。
而橋接模式的思想就是從不同的維度實(shí)現(xiàn),通過(guò)提高耦合度的方式來(lái)減少開(kāi)發(fā)工作量,比如上面的電腦分類和電腦品牌分類分屬于兩個(gè)維度,如果我們從兩個(gè)維度分別實(shí)現(xiàn),這樣我們可以減少開(kāi)發(fā)復(fù)雜度,這就是Java開(kāi)發(fā)的單一原則。
具體實(shí)現(xiàn)代碼如下:
package com.test.bridge;
interface Brand {
public void sale();
}
class Dell implements Brand {
public void sale() {
System.out.println("銷(xiāo)售戴爾品牌電腦");
}
}
class Lenovo implements Brand{
public void sale() {
System.out.println("銷(xiāo)售聯(lián)想品臺(tái)電腦");
}
}
class Computer {
protected Brand brand;
public Computer(Brand b) {
this.brand = b;
}
public void sale() {
brand.sale();
}
}
class Desktop extends Computer{
public Desktop(Brand b) {
super(b);
}
@Override
public void sale() {
super.sale();
System.out.println("電腦類型為臺(tái)式電腦");
}
}
class Laptop extends Computer{
public Laptop(Brand b) {
super(b);
}
public void sale() {
super.sale();
System.out.println("電腦類型為筆記本");
}
}
class Pad extends Computer{
public Pad(Brand b) {
super(b);
}
@Override
public void sale() {
super.sale();
System.out.println("電腦類型為平板電腦");
}
}
public class Demo {
public static void main(String[] args) {
//銷(xiāo)售聯(lián)想筆記本
Brand b = new Lenovo();
Computer c = new Laptop(b);
c.sale();
//銷(xiāo)售dell臺(tái)式機(jī)
Brand b1 = new Dell();
Computer c1 = new Desktop(b1);
c1.sale();
}
}
通過(guò)上面的例子我們看出,我們將品牌(Brand)以對(duì)象的形式放到電腦分類的類里面,這樣就有效的降低了電腦的復(fù)雜度,而且是幾何降低,而且分兩個(gè)方向?qū)崿F(xiàn),還讓我們的思路更加清晰。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- Java橋接模式原理及用法解析
- Java橋接模式實(shí)例詳解【簡(jiǎn)單版與升級(jí)版】
- Java使用橋接模式實(shí)現(xiàn)開(kāi)關(guān)和電燈照明功能詳解
- 23種設(shè)計(jì)模式(9) java橋接模式
- Java設(shè)計(jì)模式之橋接模式實(shí)例詳解
- Java 中橋接模式——對(duì)象結(jié)構(gòu)型模式的實(shí)例詳解
- java設(shè)計(jì)模式之橋接模式(Bridge)
- Java結(jié)構(gòu)型設(shè)計(jì)模式中的適配器模式與橋接模式解析
- Java設(shè)計(jì)模式之橋接模式的實(shí)現(xiàn)
相關(guān)文章
easyexcel讀取excel合并單元格數(shù)據(jù)的操作代碼
這篇文章主要介紹了easyexcel讀取excel合并單元格數(shù)據(jù)的操作代碼,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-05-05
Java實(shí)現(xiàn)的AES256加密解密功能示例
這篇文章主要介紹了Java實(shí)現(xiàn)的AES256加密解密功能,結(jié)合完整實(shí)例形式分析了Java實(shí)現(xiàn)AES256加密解密功能的步驟與相關(guān)操作技巧,需要的朋友可以參考下2017-02-02
Java @Transactional與synchronized使用的問(wèn)題
這篇文章主要介紹了Java @Transactional與synchronized使用的問(wèn)題,了解內(nèi)部原理是為了幫助我們做擴(kuò)展,同時(shí)也是驗(yàn)證了一個(gè)人的學(xué)習(xí)能力,如果你想讓自己的職業(yè)道路更上一層樓,這些底層的東西你是必須要會(huì)的2023-01-01
詳解SpringBoot與SpringCloud的版本對(duì)應(yīng)詳細(xì)版
這篇文章主要介紹了詳解SpringBoot與SpringCloud的版本對(duì)應(yīng)詳細(xì)版,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-09-09
Java虛擬機(jī)JVM性能優(yōu)化(三):垃圾收集詳解
這篇文章主要介紹了Java虛擬機(jī)JVM性能優(yōu)化(三):垃圾收集詳解,本文講解了眾多的JVM垃圾收集器知識(shí)點(diǎn),需要的朋友可以參考下2014-09-09
Eclipse的Debug調(diào)試技巧大全(總結(jié))
這篇文章主要介紹了Eclipse的Debug調(diào)試技巧大全(總結(jié)),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-12-12

