享元模式

来源:互联网 发布:意式咖啡机推荐知乎 编辑:程序博客网 时间:2024/06/07 00:41

JAVA的字符串就是享元模式的例子。

String 声明之后就是final类型。并存到常量池。再次新建一个同样的字符串,亦然指向该常量池的地址。(五子棋,围棋)

这样就没必要创建大量的对象(类似的对象)。节省资源。


该享元模式,就是共享空间,来避免大量同样内容对象的开销。  大量颗粒的对象。

主要是区分内蕴状态(在享元对象内部,不会随着环境改变而不同,可以共享),外蕴状态(与前者相反,由客户端保存,并随着环境改变而改变,不可共享,在需要使用的时候传到 享元对象内部)。

享元抽象类:

piblic abstract class Flyweight{      public abstract void operation(int x);}

具体享元类:

class ConcreteFlyweight extends Flyweight{      public void operation(int x){             System.out.println("共享:"+x);       }}


可以新建一个工厂,使用set存储对象,如果实例化了,直接返回否则,new

相当于一个 多对象单例模式。

class FlyweightFactory{      private Set fly = new Hashtable();     public FlyweightFactory(){          fly.put("x", new ConcreteFlyweight());     }}

我们使用的时候,直接从set中取就可以了。

如果不共享,有差别的部分。。可以定义外部状态。。外部状态 其实就是 声明。 共享类里面的一个对象。然后set到共享类中,共享类调用该类。

就实现差异化。


0 0
原创粉丝点击