1. 程式人生 > 實用技巧 >Spring Security 中如何讓上級擁有下級的所有許可權?

Spring Security 中如何讓上級擁有下級的所有許可權?

定義

將一個類的介面轉換為客戶希望的另外一個介面。Adapter模式使得原來原來由於介面不相容而不能一起工作的那些類可以在一起工作。

角色分析

  • 目標介面
    客戶所期待的介面,目標可以是具體的或是抽象的類,也可以是介面
  • 需要適配的類
    需要適配的類或是適配者類
  • 介面卡
    通過包裝一個需要適配的物件(繼承和組合),把原介面轉換為目標介面

適配方式

類介面卡

介面卡通過繼承的方式來實現適配者類的功能

/**
 * 類介面卡
 * 需要的是5v的電壓,但是使用220v電壓實現
 */
public class AdapterClass extends Voltage220V implements Voltage5V {
    @Override
    public int support5V() {
        return support220V() / 44;
    }
}

idea類圖

物件介面卡

介面卡通過組合的方式來實現適配者類的功能

/**
 * 物件介面卡
 */
public class AdapterObject implements Voltage5V {

    private Voltage220V obj;

    public AdapterObject(Voltage220V obj) {
        this.obj = obj;
    }

    @Override
    public int support5V() {
        return obj.support220V() / 44;
    }
}

idea類圖

物件介面卡和類介面卡區別

物件介面卡優點

  • 一個物件介面卡可以把多個不同的介面卡適配到同一個目標
  • 可以適配一個適配者的子類,由於介面卡和適配者之間是關聯關係,根據“里氏替代”,適配者的子類也可以通過該介面卡進行適配。

類介面卡的缺點

  • 對於java,c#等語言不支援多重繼承的語言,一次最多隻能適配一個適配者類,不能同時適配多個適配者
  • 在Java和c#中,類介面卡模式中的目標抽象類只能是介面,使用具有一定侷限性

適用場景

  • 系統需要使用一些現有的類,而這些類的介面(比如方法名)不符合系統的需求,甚至沒有這些類的原始碼
  • 想建立一個可以重複使用的類,用於於一些彼此之間沒有太大聯絡的一些類,包括一些可能在將來一起引進的類一起工作