java享元模式怎么实现

71次阅读
没有评论

共计 1240 个字符,预计需要花费 4 分钟才能阅读完成。

在 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

在这个例子中,享元工厂类根据传入的参数来获取共享对象。如果共享对象已经创建过,则直接返回;如果没有创建过,则创建一个新的共享对象,并将其保存在集合中。客户端通过享元工厂来获取共享对象,并调用其操作方法。由于共享对象是可共享的,所以多个客户端可以共享同一个对象,减少了内存的使用。

丸趣 TV 网 – 提供最优质的资源集合!

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-12-16发表,共计1240字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)