設計模式之橋接模式

一.橋接模式java

橋接模式定義:橋接模式即將抽象部分和實現部分分離,使其能夠獨立變化。ide

橋接模式將繼承關係轉爲關聯關係,下降了類與類之間的耦合。post

抽象化:將複雜物理體中一個或多個特徵抽取而出,而注重其餘過程的行動或過程。spa

實現化:是與抽象化給出具體過程,是與抽象化爲互逆關係。3d

脫耦合:將抽象化和實現化的過程解耦合,將他們之間的強關聯轉爲弱關聯關係。code

二.模式結構blog

 

橋接模式主要包含以下幾個角色繼承

Abstraction 抽象類接口

RefinedAbstraction 擴充抽象類get

Implementor 實現類接口

ConcreteImplementor具體實現類

三.模式實現

如今存在這樣一個應用場景.一個公司的人員存在兩種維度

一種維度是公司內的職務,另外就是黨內職務

職務維度:董事長,辦公室主任

黨內職務維度:紀檢委員,黨支部書記,調查員

職務維度---->黨內職務維度存在1對n的狀況

因此對於職務存在更高維度上的抽象,黨內職務相對簡單。

抽象層面的黨內職務PartPost

public abstract class PartyPost {
    public abstract void  Task();
}

抽象層面的職務,職務能夠1對n黨內職務.

import java.util.ArrayList;

//職務
public abstract class Position {

    private String PositionName =null;

    private ArrayList<PartyPost> PartyPosts =new ArrayList(); //黨內職位

    public Position(String positionName) {
        PositionName = positionName;
    }

    public void Appointment(PartyPost partyPost){
        PartyPosts.add(partyPost);
    }
    public String getPositionName() {
        return PositionName;
    }

    public void setPositionName(String positionName) {
        PositionName = positionName;
    }

    public void Work(){
        System.out.println(PositionName+"時刻準備爲人民服務!");

        for (PartyPost post: PartyPosts) {
            post.Task();
        }
    }

}

擴充的抽象類: 董事長是職務具體位置

public class Chairman extends Position {

    public Chairman(String positionName) {
        super(positionName);
    }
}

擴充的抽象類: 項目經理是職務具體位置

 

public class ProjectManager extends Position{

    public ProjectManager(String positionName) {
        super(positionName);
    }
}

實現類結構:黨內職務的調研員

public class Invoker extends PartyPost {
    @Override
    public void Task() {
        System.out.println("調用基層的大好形勢");
    }
}

實現類結構:黨內職務的的黨支部書記

public class Secretary extends PartyPost {
    @Override
    public void Task() {
        System.out.println("主持調用工做,協調各辦事員的關係!");
    }
}

實現類結構:黨內職務的的紀檢委員

//紀檢委員
public class CommitteeMember extends PartyPost {

    @Override
    public void Task() {
        System.out.println("防止腐敗而且預防腐敗的發生!");
    }
}

四.該模式的優勢

1.分離抽象接口和具體實現部分,提供了比繼承更好的解決方案

2.橋接模式提升系統的可擴展性

3.具體實現細節對用戶隱藏

缺點

1.增長系統的理解難度

2.橋接模式須要正確的認識兩種維度的抽象關係

五.應用場景

1.系統中須要定義抽象角色和具體實現角色更靈活

2.對於不但願經過繼承實現類數量劇增的而言,有更好的實現思路

相關文章
相關標籤/搜索