当前位置:编程学习 > JAVA >>

《JAVA与模式》第12天—享元模式=单例模式+工厂模式+合成模式

享元模式=单例模式+工厂模式+合成模式
 

单例模式:

保证一个类仅有一个实例,并提供一个访问它的全局访问点。

结构图:

 \

注意多线程的单例。

[java] 
package com.bankht.Flyweight.complex; 
 
/**
 * @author: 特种兵—AK47
 * @创建时间:2012-6-26 下午03:25:14
 * 
 * @类说明 :单例
 */ 
public class Singleton { 
    private static Singleton instance; 
    private static final Object syncRoot = new Object(); 
 
    private Singleton() { 
 
    } 
 
    public static Singleton getInstance() { 
        if (instance == null) { 
            synchronized (syncRoot) { 
                instance = new Singleton(); 
            } 
        } 
        return instance; 
    } 

package com.bankht.Flyweight.complex;

/**
 * @author: 特种兵—AK47
 * @创建时间:2012-6-26 下午03:25:14
 *
 * @类说明 :单例
 */
public class Singleton {
 private static Singleton instance;
 private static final Object syncRoot = new Object();

 private Singleton() {

 }

 public static Singleton getInstance() {
  if (instance == null) {
   synchronized (syncRoot) {
    instance = new Singleton();
   }
  }
  return instance;
 }
}
 

 

享元模式:

 

享元的英文是Flyweight,它是一个来自于体育方面的专业用语,在拳击、摔跤和举重比赛中特指最轻量的级别。把这个单词移植到软件工程里面,也是用来表示特别小的对象,即细粒度对象。Flyweight享元,可以理解为共享元对象,也就是共享细粒度对象。享元模式就是通过使用共享的方式,达到高效地支持大量的细粒度对象。它的目的就是节省占用的空间资源,从而实现系统性能得到改善。

享元模式主要作用是实现对象的共享,即使用共享池,从而减少内存分配的开销。享元模式通常与工厂模式一起使用,它包含了多个共享的组合对象,因此:享元模式=单例模式+工厂模式+合成模式,其结构如图12-25所示

 \

其中:FlyweightFactoiy享元工厂负责创建和管理享元对象,它必须保证享元对象可以被系统适当共享。当一个客户端对象请求一个享元对象的时候,享元工厂需要检查系统中是否已经有一个符合要求的享元对象,如果已经有了,享元工厂就应当提供这个已有的享元对象;如果系统中没有一个适当的享元对象的话,享元工厂就应当创建一个新的合适的享元对象。Flyweight是所有的具体享元类的超类,为这些类规定出需要实现的公共接口或抽象类。MyFlyweight1和MyFlyweight2则是实现抽象享元所规定的接口。

 \
作者:m13666368773
 

补充:软件开发 , Java ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,