这里简要说明Java中的分层设计思想。如下图所示:
将功能的实现分在两层进行,访问层和业务层。
(1)设计IDao接口
package web.java.xml.model;
public interface IDao {
public void create();
}
(2)设计接口实现类DaoJdbc
package web.java.xml.model;
public class DaoJdbc implements IDao {
@Override
public void create() {
System.out.println("DaoJdbc::create()");
}
}
(3)设计接口实现类DaoHibernate
package web.java.xml.model;
public class DaoHibernate implements IDao {
@Override
public void create() {
System.out.println("DaoHibernate::create()");
}
}
(4)设计单例工厂
package web.java.xml.model;
/**
* 单例的Dao工厂:
* 单例模式的特点:
* (1)单例类只能有一个实例
* (2)单例类必须自己给自己创建一个唯一的实例
* (3)单例类必须给所有其他对象提供这一实例
*/
public class DaoFactory {
//1.私有化构造函数,不能让外界进行对象创建
private DaoFactory(){}
//2.这个类必须自动向整个系统提供这个实例对象
public static DaoFactory getDaoFactory(){
if(daoFactory==null){
daoFactory = new DaoFactory();
}
return daoFactory;
}
//3.单例类必须执行创建
private static DaoFactory daoFactory;
public IDao getDao(){
//项目总根据需求对这里的内容进行修改,决定工厂提供什么样的产品
return new DaoJdbc();
}
}
(5)设计业务层
package web.java.xml.model;
/**
* 业务层
*
*/
public class Service {
public void create(){
DaoFactory daoFactory = DaoFactory.getDaoFactory();
IDao iDao = daoFactory.getDao();
iDao.create();
}
}
业务层功能的实现,依赖于工厂向外提供产品。工厂的实现又依赖于下面数据访问层代码。使用分层设计思想,有助于代码的细化,便于后期的更新与维护。
(6)编写测试函数
package web.java.xml.model;
public class Demo1 {
public static void main(String[] args) {
Service ser = new Service();
ser.create();
}
}
显然,这里想要什么产品的话,只需要在工厂中修改相应的代码即可。