globalobjectprovider.java

来自「在线模拟选课系统」· Java 代码 · 共 69 行

JAVA
69
字号
/*
 * This product includes software developed by the
 * Apache Software Foundation (http://www.apache.org/).
 */
package ch07.global;

import java.util.*;
import org.apache.commons.jxpath.JXPathContext;

//这个类用来提供逻辑层和数据访问层的对象
public class GlobalObjectProvider 
{
    private static Hashtable logicObjectFactory = new Hashtable();
    private static Hashtable databaseObjectFactory = new Hashtable();
    private static JXPathContext configContext = null;
    
    //初始化,获得配置文件的对应DOM
    public static void init( JXPathContext tmpContext )
    {
        configContext = tmpContext;
    }
    
    //根据Key获得对应的对象
    public static Object getLogicService(String sKey)
    {
        try
        {
            Object obj = logicObjectFactory.get(sKey);
            if ( obj == null )
            {
                //根据配置文件创建一个新对象
                String sClassName = (String)configContext.getValue(
                        "ch07-config/logic[@key='"+sKey+"']/@className");
                obj = Class.forName( sClassName ).newInstance();
                logicObjectFactory.put( sKey, obj);
            }
            
            return obj;
        }
        catch(Exception e)
        {
            return null;
        }
    }
    
    //根据Key获得对应的对象
    public static Object getDatabaseService(String sKey)
    {
        try
        {
            Object obj = databaseObjectFactory.get(sKey);
            if ( obj == null )
            {
                //根据配置文件创建一个新对象
                String sClassName = (String)configContext.getValue(
                        "ch07-config/database[@key='"+sKey+"']/@className");
                obj = Class.forName( sClassName ).newInstance();
                databaseObjectFactory.put( sKey, obj);
            }
            
            return obj;
        }
        catch(Exception e)
        {
            return null;
        }
    }

}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?