易截截图软件、单文件、免安装、纯绿色、仅160KB

Java设计模式之Flyweight模式


GOF:运用共享技术有效地支持大量细粒度的对象。
 
解释一下概念:也就是说在一个系统中如果有多个相同的对象,那么只共享一份就可以
了,不必每个都去实例化一个对象。比如说(这里引用GOF书中的例子)一个文本系统,每个字母定一个对象,那么大小写字母一共就是52个,那么就要定义
52个对象。如果有一个1M的文本,那么字母是何其的多,如果每个字母都定义一个对象那么内存早就爆了。那么如果要是每个字母都共享一个对象,那么就大大
节约了资源。
 
在Flyweight模式中,由于要产生各种各样的对象,所以在
Flyweight(享元)模式中常出现Factory 模式。Flyweight的内部状态是用来共享的,Flyweight
factory负责维护一个对象存储池(Flyweight
Pool)来存放内部状态的对象。Flyweight模式是一个提高程序效率和性能的模式,会大大加快程序的运行速度.应用场合很多,下面举个例子:
 
先定义一个抽象的Flyweight类:
 
package Flyweight;
 
public abstract class Flyweight
...
{
 public abstract void operation();
}//end abstract class Flyweight
 
在实现一个具体类:
 
package Flyweight;
 
public class ConcreteFlyweight extends Flyweight
...
{
 private String string;
 public ConcreteFlyweight(String str)
 ...
 {
string = str;
 }//end ConcreteFlyweight(...)
 
 public void operation()
 ...
 {
System.out.println("Concrete---Flyweight : " + string);
 }//end operation()
 
}//end class ConcreteFlyweight
 
实现一个工厂方法类:
 
package Flyweight;
import java.util.Hashtable;
 
public class FlyweightFactory
...
{
 private Hashtable flyweights = new Hashtable();//----------------------------1
 public FlyweightFactory() ...{}
 
 public Flyweight getFlyWeight(Object obj)
 ...
 {
Flyweight flyweight = (Flyweight) flyweights.get(obj);//----------------2
 
if(flyweight == null) ...{//---------------------------------------------------3
 //产生新的ConcreteFlyweight
 flyweight = new ConcreteFlyweight((String)obj);
 flyweights.put(obj, flyweight);//--------------------------------------5
}
r


相关文档:

Java开发 之 StringBuffer和StringBuilder(1)


转 : http://www.jcourse.cn/read/234
2009-03-02 作者:
zhangtaolv
在我们日常开发中,经常会遇到对文本的操作,并且在一般的MIS系统中,文本操作尤为多,如用户名、文章内容、文章标题、合同内容等。在之前的教程中,我也给大家讲解了Java中最基本的字符串操作的类,String。在之前的教程中我也给大家讲了Str ......

Java ArrayList使用总结(一)

   最近一直在使用Java,感觉它的越界检查非常有效。这一点对于初学者来说是非常重要的(提高程序的严谨性),对于有经验的程序员来说也很有帮助。Java中有一个很有效的ArrayList类(读者可以结合Java API
来学习它),。它和一般的数组不一样,不需要提前分配固定的空间(使用比较灵活),每次使用的时候可以添加 ......

java中的URLEncoder和URLDecoder类

java中的URLEncoder和URLDecoder类
    URLEncoder类包含将字符串转换为application/x-www-form-urlencoded MIME 格式的静态方法。
为了解决web设计中不同操作系统间的差异性,我们在URL中使用的字符就必须是一个ASCII字符集的固定字集中的元素,具体如下:
1.大写字母A-Z
2.小写字母a- ......

四个有害的Java编码习惯

程序中的编码风格让我们的编程工作变得轻松,特别是程序维护员,他们要经常阅读其他人编写的程序编码,这一点尤其突出。编码规范从根本上解决了程序维护员的难题;规范的编码阅读和理解起来更容易,也可以快速的不费力气的借鉴别人的编码。对将来维护你编码的人来说,你的编码越优化,他们就越喜欢你的编码,理解起来也就越 ......

java线程同步问题

一般,有3种使用锁进行同步的方法
    a.方法同步,例如public synchronized void xxx()...
    b.静态方法同步,例如public static synchronized void xxx()...
    c.程序块同步,例如
        ...
    &n ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号