话不多说,代码如下:
package reflectAbstractFactory. user;
public class User {
private long id;
private String name;
public long getId ( ) {
return id;
}
public void setId ( long id) {
this . id = id;
}
public String getName ( ) {
return name;
}
public void setName ( String name) {
this . name = name;
}
}
package reflectAbstractFactory. user;
public interface IUser {
void insert ( User user) ;
void getUser ( int id) ;
}
package reflectAbstractFactory. user;
public class AccessUser implements IUser {
@Override
public void insert ( User user) {
System. out. println ( "在Access数据库的user表插入一条记录" ) ;
}
@Override
public void getUser ( int id) {
System. out. println ( "在Access数据库的user表根据ID获取一条记录" ) ;
}
}
package reflectAbstractFactory. user;
public class SqlServerUser implements IUser {
@Override
public void insert ( User user) {
System. out. println ( "在SqlServer数据库的user表插入一条记录" ) ;
}
@Override
public void getUser ( int id) {
System. out. println ( "在SqlServer数据库的user表根据ID获取一条记录" ) ;
}
}
package reflectAbstractFactory. dept;
public class Department {
private long id;
private String deptName;
public long getId ( ) {
return id;
}
public void setId ( long id) {
this . id = id;
}
public String getDeptName ( ) {
return deptName;
}
public void setDeptName ( String deptName) {
this . deptName = deptName;
}
}
package reflectAbstractFactory. dept;
public interface IDepartment {
void insert ( Department dept) ;
void getDept ( int id) ;
}
package reflectAbstractFactory. dept;
public class AccessDepartment implements IDepartment {
@Override
public void insert ( Department dept) {
System. out. println ( "在Access数据库的department表插入一条记录" ) ;
}
@Override
public void getDept ( int id) {
System. out. println ( "在Access数据库的department表根据ID获取一条记录" ) ;
}
}
package reflectAbstractFactory. dept;
public class SqlServerDepartment implements IDepartment {
@Override
public void insert ( Department dept) {
System. out. println ( "在SqlServer数据库的department表插入一条记录" ) ;
}
@Override
public void getDept ( int id) {
System. out. println ( "在SqlServer数据库的department表根据ID获取一条记录" ) ;
}
}
package reflectAbstractFactory;
import java. io. BufferedInputStream;
import java. io. FileInputStream;
import java. io. InputStream;
import java. util. Iterator;
import java. util. Properties;
import reflectAbstractFactory. dept. IDepartment;
import reflectAbstractFactory. user. IUser;
public class ReflectSqlFactory {
public String getDb ( ) {
Properties prop = new Properties ( ) ;
String db = "" ;
try {
InputStream in = new BufferedInputStream ( new FileInputStream (
"E:/sql.properties" ) ) ;
prop. load ( in) ;
Iterator< String> it = prop. stringPropertyNames ( ) . iterator ( ) ;
while ( it. hasNext ( ) ) {
String key = it. next ( ) ;
if ( "db" . endsWith ( key) ) {
db = prop. getProperty ( "db" ) ;
break ;
}
}
in. close ( ) ;
} catch ( Exception e) {
System. out. println ( e) ;
}
return db;
}
public Class< ? > getsqlFactory ( String pge, String type) throws ClassNotFoundException{
String className= "reflectAbstractFactory." + pge+ getDb ( ) + type;
System. out. println ( className) ;
Class< ? > c1 = Class. forName ( className) ;
System. out. println ( c1. getName ( ) ) ;
return c1;
}
public IUser createUser ( ) throws InstantiationException, IllegalAccessException, ClassNotFoundException{
Class< ? > c = getsqlFactory ( "user." , "User" ) ;
IUser iu = ( IUser) c. newInstance ( ) ;
return iu;
} ;
public IDepartment createDept ( ) throws ClassNotFoundException, InstantiationException, IllegalAccessException{
Class< ? > c = getsqlFactory ( "dept." , "Department" ) ;
IDepartment id = ( IDepartment) c. newInstance ( ) ;
return id;
} ;
}
package reflectAbstractFactory;
import reflectAbstractFactory. dept. Department;
import reflectAbstractFactory. dept. IDepartment;
import reflectAbstractFactory. user. IUser;
import reflectAbstractFactory. user. User;
public class Business {
public static void main ( String[ ] args) throws InstantiationException, IllegalAccessException, ClassNotFoundException {
User user = new User ( ) ;
ReflectSqlFactory reflectSqlFactory = new ReflectSqlFactory ( ) ;
IUser iuDao = reflectSqlFactory. createUser ( ) ;
iuDao. insert ( user) ;
iuDao. getUser ( 1 ) ;
Department dept = new Department ( ) ;
IDepartment idepatDao = reflectSqlFactory. createDept ( ) ;
idepatDao. insert ( dept) ;
idepatDao. getDept ( 1 ) ;
}
}