亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

java享元模式怎么實現

小億
73
2023-10-23 16:52:50
欄目: 編程語言

在Java中,享元模式可以通過以下步驟來實現:

  1. 定義共享對象的接口(享元接口):這個接口定義了共享對象的操作方法。
public interface Flyweight {
    void operation();
}
  1. 實現共享對象的具體類(具體享元類):這些類實現了享元接口,并實現了共享對象的操作方法。
public class ConcreteFlyweight implements Flyweight {
    private String intrinsicState;

    public ConcreteFlyweight(String intrinsicState) {
        this.intrinsicState = intrinsicState;
    }

    @Override
    public void operation() {
        System.out.println("具體享元對象的操作:" + intrinsicState);
    }
}
  1. 創建享元工廠類:這個工廠類負責創建和管理共享對象,通過一個集合來保存已經創建的共享對象。
public class FlyweightFactory {
    private Map<String, Flyweight> flyweights = new HashMap<>();

    public Flyweight getFlyweight(String key) {
        if (flyweights.containsKey(key)) {
            return flyweights.get(key);
        } else {
            Flyweight flyweight = new ConcreteFlyweight(key);
            flyweights.put(key, flyweight);
            return flyweight;
        }
    }
}
  1. 使用享元對象:在客戶端中通過享元工廠來獲取共享對象,并調用其操作方法。
public class Client {
    public static void main(String[] args) {
        FlyweightFactory factory = new FlyweightFactory();

        Flyweight flyweight1 = factory.getFlyweight("A");
        flyweight1.operation();

        Flyweight flyweight2 = factory.getFlyweight("B");
        flyweight2.operation();

        Flyweight flyweight3 = factory.getFlyweight("A");
        flyweight3.operation();
    }
}

輸出結果:

具體享元對象的操作:A
具體享元對象的操作:B
具體享元對象的操作:A

在這個例子中,享元工廠類根據傳入的參數來獲取共享對象。如果共享對象已經創建過,則直接返回;如果沒有創建過,則創建一個新的共享對象,并將其保存在集合中。客戶端通過享元工廠來獲取共享對象,并調用其操作方法。由于共享對象是可共享的,所以多個客戶端可以共享同一個對象,減少了內存的使用。

0
武强县| 临沭县| 芦溪县| 开阳县| 阿克苏市| 顺义区| 禄劝| 禹城市| 锦州市| 屯留县| 慈利县| 揭西县| 闽侯县| 白水县| 长泰县| 昆明市| 家居| 井冈山市| 富源县| 右玉县| 盖州市| 海阳市| 株洲县| 嘉黎县| 石棉县| 太白县| 太仓市| 南陵县| 寻乌县| 嘉善县| 阜平县| 元氏县| 姚安县| 修水县| 临汾市| 中西区| 镇平县| 柳河县| 略阳县| 淄博市| 鲜城|