Java笔记 使用反射来改进BaseDao

关于反射 反射的定义(via Wiki):在计算机科学中,反射是指一种特定类型的计算机程序能够在运行时以一种依 赖于它的代码的抽象特性和它的运行时行为的方式被更改的特性。用比喻来说,那种程式能够"观察“并且修改自己的行为。 Java中的反射示例如下: package dddspace.job.exercise1116; public class Foo { public void fun(String str) { System.out.println(str); } } package dddspace.job.exercise1116; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; public class ReflectionDemo { public static void main(String[] args) throws SecurityException, NoSuchMethodException, ClassNotFoundException, InstantiationException, IllegalAccessException, IllegalArgumentException, InvocationTargetException { // 不使用反射 Foo foo = new Foo(); foo.fun("no reflection"); // 使用反射 String className = "dddspace.job.exercise1116.Foo"; String funName = "fun"; // 获取类名 Class cls = Class.forName(className); // 创建Object实例 Object foo2 = cls.newInstance(); // 创建Method hello Method method = cls.getMethod("fun", String.class); // 使用反射来调用Method的invode方法,参数是目标对象+参数 method.invoke(foo, "use reflection"); } } 原始BaseDao设计 我先阐述一下BaseDao的设计想法:BaseDao是一个抽象类,提供一系列Dao方法”get()/getAll()/add()/update()/delete()/getCount()",通过泛型匹配的获取类,我取出一个方法来做示例。 ...

2009-11-17 · alswl

DAO的设计-使用泛型来避免重复DAO

Thumbnail

DAO的全称是Data Access Object数据访问接口。数据访问:顾名思义就是与数据库打交道。夹在业务逻辑与数据库资源中间。 我大二时候写的一个小型管理系统,那时候老师开始强调分层和MVC的思想,当时我将DAO层分了开来,把所有与数据库的交互操作封装成对应的DAO类,这样最大的好处 是实现了封装和隔离,方便系统的迁移和重构。 分层、封装、接口化是一种基本的解决思路,无论是TCP/IP协议族,还是软件工程,都是很值得使用的方案。 ...

2009-07-10 · alswl