public void grow();
public void eat();
}
pulbic class Apple implements Fruit{
public void grow(){
System.out.println("苹果在生长...");
}
public void eat(){
System.out.println("吃苹果...");
}
}
public class Orange implements Fruit{
public void grow(){
System.out.println("橘子在生长...");
}
public void eat(){
System.out.println("吃橘子...");
}
}
pulbic class Factory{
public static Fruit getFruit(String name){
Fruit f = null;
if ("apple".equal(name)){
f = new Apple();
}else if (("orange".equal(name)){ ){
f = new Orange();
}
return f;
}
}
public class Clinet{
public static void main(String args[]){
Fruit f = Factory.getFruit(“apple”);
f.grow();
}
}
* @author gao_jie
*
*/
public interface Fruit {
public void grow();
public void eat();
}
public class Apple implements Fruit {
/* (non-Javadoc)
* @see com.cvicse.Ifactory.Fruit#grow()
*/
public void grow() {
System.out.println("苹果在生长...");
}
/* (non-Javadoc)
* @see com.cvicse.Ifactory.Fruit#eat()
*/
public void eat() {
System.out.println("吃苹果...");
}
}
public class Orange implements Fruit {
/* (non-Javadoc)
* @see com.cvicse.Ifactory.Fruit#grow()
*/
public void grow() {
System.out.println("橘子在生长...");
}
/* (non-Javadoc)
* @see com.cvicse.Ifactory.Fruit#eat()
*/
public void eat() {
System.out.println("吃橘子...");
}
}
public class Banana implements Fruit {
/* (non-Javadoc)
* @see com.cvicse.Ifactory.Fruit#grow()
*/
public void grow() {
System.out.println("香蕉在生长...");
}
/* (non-Javadoc)
* @see com.cvicse.Ifactory.Fruit#eat()
*/
public void eat() {
System.out.println("吃香蕉...");
}
}
public class FruitFactory {
public static Fruit getFruit(String className) {
Fruit f = null;
try {
// 采用类的反射机制生成实例
f = (Fruit) Class.forName(className).newInstance();
} catch (Exception e) {
throw new ExceptionInInitializerError(e);
}
return f;
}
}
/**
* @author gao_jie
*
*/
public class PropertyOperate {
private Properties pro = null;
public PropertyOperate() {
this.pro = new Properties();
this.load();
}
// 设置一个返回方法
public Properties getPro() {
return this.pro;
}
// 加载配置文件内容
private void load() {
try {
// 文件流输入方式
InputStream file = this.getClass().getClassLoader()
.getResourceAsStream("classInfor.properties");
pro.load(file);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
classInfor.properties
apple=com.cvicse.factory.Apple
orange=com.cvicse.factory.Orange
banana=com.cvicse.factory.Banana
/**
* @author gao_jie
*
*/
public class Client {
/**
* @param args
*/
public static void main(String[] args) {
// 获取文件名字路径
Properties p = new PropertyOperate().getPro();
// 进一步扩展,现在可以由用户自己输入要使用的类型
Fruit f = FruitFactory.getFruit(p.getProperty(args[0]));
f.grow();
}
}
public interface UserDAO {
public void insert(); //插入操作
public void delet(); //删除操作
}
package com.cvicse.dao.impl;
import com.cvice.dao.UserDAO;
/**
* @author Administrator
*
*/
public class UserDAOImpl implements UserDAO{
public void delet() {
// TODO Auto-generated method stub
System.out.println("删除记录成功");
}
public void insert() {
// TODO Auto-generated method stub
System.out.println("插入记录成功");
}
}
package com.cvice.dao;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
/**
* @author Administrator
*
*/
public class DaoFactory {
private static UserDAO userDao = null;//DAO层用户接口对象
private static DaoFactory instance = new DaoFactory();
private static Properties pro;//配置文件对象
private DaoFactory() {
try {
//初始化配置文件
pro = new Properties();
//采用类加载器方法读取配置文件信息到字节流对象,采用类加载灵活,不用写死
InputStream inputStream = DaoFactory.class.getClassLoader()
.getResourceAsStream("db.properties");
//加载字节流对象
pro.load(inputStream);
} catch (IOException e) {
throw new ExceptionInInitializerError(e);
}
}
/**
* 单例模式获取唯一实例
* @return
*/
public static DaoFactory getInstance() {
return instance;
}
/**
* 根据配置文件的名字获取类的名字,采用反射机制获取其对象
* @param Key
* @return
*/
public UserDAO getUserDAO(String Key) {
try {
String className=(String) pro.get(Key);
userDao = (UserDAO) Class.forName(className).newInstance();
} catch (InstantiationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return userDao;
}
}
package com.cvicse.Test;
import com.cvice.dao.DaoFactory;
import com.cvice.dao.UserDAO;
/**
* @author Administrator
*
*/
public class DAOTest {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
UserDAO userDao=DaoFactory.getInstance().getUserDAO("userDao");
userDao.delet();
}
}