中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

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
元阳县| 当涂县| 咸宁市| 芒康县| 阿合奇县| 唐海县| 左权县| 长春市| 成安县| 乐昌市| 牡丹江市| 新乐市| 张家界市| 长阳| 额尔古纳市| 车致| 涟源市| 察哈| 静安区| 兖州市| 五峰| 东平县| 湘潭县| 会理县| 松原市| 天祝| 金门县| 焦作市| 民权县| 灵山县| 隆回县| 阳东县| 岳普湖县| 石棉县| 陆良县| 太仓市| 樟树市| 湖北省| 固安县| 邵阳市| 新丰县|