橋模式:將某個問題抽象的不同形式分別與該問題的具體實現部分相分離,使他們都可以獨立變化,並能夠動態結合。
例如電視廠商海爾,長虹生產21寸,29寸電視機。從這裏要將它們分離出來,就用到橋模式。電視機與電視機生產廠商掛橋,從而,分離出不同廠商的實現,與不同電視機型號的實現.
看下代碼
創建電視機
- public abstract class Television {
- //電視廠商
- protected TelevisionMaker televisionMaker;
- //收看電視
- abstract public void teleview(TelevisionMaker televisionMaker);
- }
接下來創建生產廠商
- public abstract class TelevisionMaker {
- abstract public void produce();
- }
電視機的型號,即繼承電視機類
- public class Inch21 extends Television{
- public void teleview(TelevisionMaker televisionMaker) {
- System.out.println("21寸電視");
- }
- }
- public class Inch29 extends Television{
- public void teleview(TelevisionMaker televisionMaker) {
- System.out.println("29寸電視");
- }
- }
下面是不同廠商,即繼承生產廠商
- public class ChangHong extends TelevisionMaker{
- public ChangHong(){
- System.out.println("長虹廠商");
- }
- public void produce() {
- System.out.println("長虹廠商");
- }
- }
- public class Haier extends TelevisionMaker{
- public Haier(){
- System.out.println("海爾廠商");
- }
- public void produce() {
- System.out.println("海爾廠商");
- }
- }
這樣就使用了橋模式,將原本繁雜的系統分離開來。如果根據需求變動,要增加電視機生產型號或者電視機生產廠商,只需要實現相對應的抽象類即可。
這樣,我們也可以根據用戶的需要,得到他所需要的電視機,如長虹廠商出廠的29寸電視機。
測試代碼如下:
- public class Client {
- public static void main(String[] args) {
- // TODO Auto-generated method stub
- Inch29 i = new Inch29();
- i.teleview(new ChangHong());
- }
- }
結果:
長虹廠商
29寸電視
轉自:點擊打開鏈接