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