做钢材都有什么网站,电子商务网站建设书,百度站长资源管理,网站建设 智宇软件享元模式#xff08;Flyweigh#xff09;#xff0c;运用共享技术有效地支持大量细粒度的对象。 package flyweight;//可以接受并作用于外部状态
public abstract class Flyweight {public abstract void operation(int extrinsicState);} package flyweight;//为内部状态增… 享元模式Flyweigh运用共享技术有效地支持大量细粒度的对象。 package flyweight;//可以接受并作用于外部状态
public abstract class Flyweight {public abstract void operation(int extrinsicState);} package flyweight;//为内部状态增加存储空间
public class ConcreteFlyweight extends Flyweight{Overridepublic void operation(int extrinsicState) {System.out.println(ConcreteFlyweightextrinsicState);}} package flyweight;//不需要共享的子类
public class UnsharedConcreteFlyweight extends Flyweight {Overridepublic void operation(int extrinsicState) {System.out.println(UnsharedConcreteFlyweightextrinsicState);}} package flyweight;import java.util.HashMap;public class FlyweightFactory {private HashMapString, Flyweight flyweightMapnew HashMapString, Flyweight();public FlyweightFactory() {flyweightMap.put(X, new ConcreteFlyweight());flyweightMap.put(Y, new ConcreteFlyweight());flyweightMap.put(Z, new ConcreteFlyweight());}public Flyweight getFlyweightMap(String key) {return flyweightMap.get(key);}public static void main(String[] args) {int extrinsicState22;FlyweightFactory flyweightFactorynew FlyweightFactory();Flyweight flyweightflyweightFactory.getFlyweightMap(X);flyweight.operation(--extrinsicState);Flyweight flyweight2flyweightFactory.getFlyweightMap(Y);flyweight.operation(--extrinsicState);Flyweight flyweight3flyweightFactory.getFlyweightMap(Z);flyweight.operation(--extrinsicState);UnsharedConcreteFlyweight unsharedConcreteFlyweightnew UnsharedConcreteFlyweight();unsharedConcreteFlyweight.operation(--extrinsicState);}} 享元模式可以避免大量非常相似类的开销。在程序设计中有时需要生成大量细粒度的类实例来表示数据。如果能发现这些实例除了几个参数外基本上都是相同的有时就能够大幅度地减少需要实例化的类的数量如果能把那些参数移到类实例的外面在方法调用时将它们传递进来就可以通过共享大幅度地减少单个实例的数目。 转载于:https://www.cnblogs.com/linkarl/p/4868193.html