易截截图软件、单文件、免安装、纯绿色、仅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实现的FTP上传下载客户端

org.apache.commons.net.ftp.*中的FTPClient类实现的FTP上传下载功能:
需导入Apache的commos-net的jar包,若导入的是1.4版本的包,则FTPFile[] fileList = ftpClient.listFiles()的执行过程中可能会报错,此时更换导入2.0版本的jar包,问题即可解决。
代码如下:
package com.java.ftp;
import java.io.File;
import ......

JAVA线程之三:线程的挂起和恢复

1,概述:线程的挂起操作实质上就是使线程进入“非可执行”状态下,在这个状态下CPU不会分给线程时间片,进入这个状态可以用来暂停一个线程的运行;在线程挂起后,可以通过重新唤醒线程来使之恢复运行。当一个线程进入“非可执行”状态,即挂起状态时,必然存在某种原因使其不能继续运行,这些原因可能 ......

Java的AWT

AWT是Java中支持图形化用户界面GUI设计的一个工具集。AWT的API是独立于平台的,但设计出来的界面在各种平台的风格不同,利用API中各种类在特定平台下的对等组件peers提供具体平台下的实现。
欲建立一个GUI首先确定所用的组件及其布局,然后实现其事件的响应。组件的类型有多种,如常用的Button、CheckBox等,均为Component ......

JAVA冒泡排序算法的几种实现方法

本文出自 “唐大老师” 博客,请务必保留此出处http://tscjsj.blog.51cto.com/412451/84561
public class Bubble {
// 冒泡排序函数1
public static void bubbleSort1(Comparable []data){

int position,scan;
Comparable temp;
for(position = data.length-1;position>=0;position--){
......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号