享元模式

享元模式与字符串优化

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到共享类中,共享类调用该类。

就实现差异化。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值