JavaWeb.面向接口编程

不要依赖一个类,而是依赖约个接口,可以随意的切换实现了这个接口的任意一个实现类,这样更好的降耦合
并且把接口实现的产出列到工厂里

先写一个接口:
public interface UserDao {
public void addUser(User form);
public User findByUsername(String username);
}

再来一个实现类:
public class UserDaoImpl implements UserDao{
public void addUser(User form) {
}
public User findByUsername(String username) {
return null;
}
}

再来一个工厂,它的作用是去产出接口的实现类
// 把具体的实现类的创建,隐藏到工厂中了!

为了不修改代码就实现切换实现类,需要把变化的部分放到配置文件(dao.properties)中,这个文件放到src下
com.zlw.lmpl.UserDao=com.zlw.lmpl.UserDaoImpl

一般用包名做键,用包名加实现类名做值
package com.zlw.lmpl;
import java.io.InputStream;
import java.util.Properties;
import org.junit.Test;
public class DaoFactory {
/**
* 通过配置文件得到dao实现类的名称!
* 通过类名称,完成创建类对象!(反射完成的!)
* @author
*
/
private static Properties properties = null;
static{
try {
// 加载配置文件内容到props对象中
InputStream in = DaoFactory.class.getClassLoader().getResourceAsStream(“dao.properties”);
properties = new Properties();
properties.load(in);
} catch (Exception e) {
throw new RuntimeException(e);
}
}
/
*
* 返回一个具体UserDao的实现类对象
* @return
/
public static UserDao getUserDao(){
/
*
* 给出一个配置文件,文件中给出UserDao接口的实现类名称!
* 我们这个方法,获取实现类的类名,通过反射完成创建对象!
/
/

* 得到dao实现类的名称
/
String daoClassName = properties.getProperty(“com.zlw.lmpl.UserDao”);
/

* 通过反射来创建实现类的对象 
*/
try {
Class calzz = Class.forName(daoClassName);
return (UserDao)calzz.newInstance();
} catch (Exception e) {
throw new RuntimeException(e);
}
}
}

得到具体实现类:
// 把具体的实现类的创建,隐藏到工厂中了!
UserDao uImpl = DaoFactory.getUserDao();
System.out.println(uImpl);

微信公众号【码农园区】,技术分享,值得关注

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

梦之归途

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值