java - DAOFactory 自动类型类型转换。 java

标签 java

我有一个 DAOFactory,它返回给我一个特定的 dao

public class DAOFactory {

public static final int DAO1 = 1;
public static final int DAO2 = 2;

public static Object getDao(int dao) {
        switch (dao) {
            case DAO1:
                return new Dao1();
            case DAO2:
                return new Dao2();
        }
        return null;
    }
}

Dao 是

的子元素
abstract class GenericDao<E, ID extends Serializable> implements
        GenericDaoInterface<E, ID>

所以看起来像:

public class Dao1 extends GenericDao<Dao1, Integer>{
....
}

如果我创建新的 dao。我必须进行类型转换。

Dao1 dao = (Dao1) DAOFactory.getDao(DAOFactory.DAO1);

是否可以进行自动类型转换,或者最好在 DAOFactory 中创建方法来调用特定的 dao ?例如。 public static Dao1 getDao1()

最佳答案

创建一个接口(interface)IGenericDao并在GenericDao上实现它,工厂必须返回IGenericDao接口(interface),通过这种方式你可以使用所有Dao的通用行为或在需要时转换为特定类型,使用Class而不是int作为参数到工厂方法。

public static IGenericDao getDao(Class)

仅使用一种方法的另一个原因是,在将来的实现中,您可以使用反射来实现工厂并返回动态正确的类型,并且不需要更改工厂的所有客户端。

关于java - DAOFactory 自动类型类型转换。 java ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11246370/

相关文章:

java - 如何在gremlin中编写for循环?

java - Wildfly 10 中的 org.jboss.security.jndi.JndiLoginInitialContextFactory ClassNotFound

java - 从另一个类中的方法访问 ArrayList

java - 阵列适配器与基本适配器

java - 我如何将这个c#代码翻译成java

Java 二叉树 : How to balance a tree in the insert method?

java - Maven项目在eclipse中抛出ClassNotFoundException

java - MapWritable 用新添加的键替换所有现有键 - Hadoop MapReduce 2.6.4

java - 使用 PEM 私钥签名字符串

java - Log4j2:如何打印日志中的所有对象参数