做banner的在線網(wǎng)站/臨沂seo公司穩(wěn)健火星
橋接模式
點(diǎn)奶茶的時(shí)候, 我們一般選擇原味奶茶/牛奶奶茶/咸味奶茶
現(xiàn)在假設(shè)我們也有這些已經(jīng)實(shí)現(xiàn)好的奶茶類, 且這個(gè)奶茶類僅僅就是一個(gè)類, 什么也沒有, 不可改動(dòng)
類似
class 奶茶{
}class 原味奶茶 extends 奶茶{
}
但是奶茶也分大杯奶茶, 中杯奶茶, 小杯奶茶, 如果我們要實(shí)現(xiàn)這種不同型號(hào)的奶茶, 可以設(shè)計(jì)出原味大杯奶茶, 原味中杯奶茶, 原味小杯奶茶, 牛奶大杯奶茶, 牛奶中杯奶茶…等等足足9個(gè)類, 那萬(wàn)一我們奶茶還能加冰加熱半糖少糖, 豈不是越來(lái)越多類
這時(shí)候橋接模式就可以出場(chǎng)了
橋接模式的固定角色有四個(gè):
抽象化(Abstraction)角色 :定義抽象類,并包含一個(gè)對(duì)實(shí)現(xiàn)化對(duì)象的引用。
擴(kuò)展抽象化(Refined Abstraction)角色 :是抽象化角色的子類,實(shí)現(xiàn)父類中的業(yè)務(wù)方法,并通過組合關(guān)系調(diào)用實(shí)現(xiàn)化角色中的業(yè)務(wù)方法。
實(shí)現(xiàn)化(Implementor)角色 :定義實(shí)現(xiàn)化角色的接口,供擴(kuò)展抽象化角色調(diào)用。
具體實(shí)現(xiàn)化(Concrete Implementor)角色 :給出實(shí)現(xiàn)化角色接口的具體實(shí)現(xiàn)。
如何應(yīng)用到本例子?
首先抽象化角色:
class 奶茶{protected 型號(hào) x;public 奶茶(型號(hào) x){this.x = x;}
}
擴(kuò)展抽象化角色:
class 原味奶茶 extends 奶茶{public 原味奶茶(型號(hào) x){super(x);}
}
實(shí)例化角色:
class 型號(hào){
}
具體實(shí)例化角色:
class 大杯 extends 型號(hào){
}
class 中杯 extends 型號(hào){
}
class 小杯 extends 型號(hào){
}
看到這里, 不知道大家有沒有想到一個(gè)東西 : 組合
是的, 橋接模式的核心其實(shí)就是一個(gè)組合的概念