一般做一个删除什么的操作,都是下面的流程
在Jsp页面点删除按扭,后
先去控制层(Controller层)-->业务逻辑层(Business层)-->DB层(DAO层)例如:一个删除的功能,伪代码如下
Class Controller extends HttpServlet
{
public void service(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
.................................
.................................
.................................
//根据提交内容,去Business层的删除方法
.................................
.................................
.................................
}
}我经常看这里有两种做法一种是:直接 写 Business 类.然后调用DAO
Class Business
{
public void delete(pageParameter _pageParameter)
{
new DAO().delete(_pageParameter);
}
}Class DAO
{
public int delete(pageParameter _pageParameter){
retrun JdbcTemplet.queryForList("delete Table where id = "+_pageParameter.getId())
}
}第二种:是写一个接口,然后写一个实现,然后调用DAO
public interface IBusiness
{
public void delete(pageParameter _pageParameter);
}Class Business implements IBusiness
{
public void delete(pageParameter _pageParameter)
{
new DAO().delete(_pageParameter);
}
}Class DAO
{
public int delete(pageParameter _pageParameter){
retrun JdbcTemplet.queryForList("delete Table where id = "+_pageParameter.getId())
}
}
我现在用ajax + spring 开发,经常看别人用第二种方式写!
把一个页面上业务先都写入接口.然后在继承实现.
实在不知道有什么好处!给我感觉都是多写一个接口,实在不知道好处在那里....知道的能说说吗?
在Jsp页面点删除按扭,后
先去控制层(Controller层)-->业务逻辑层(Business层)-->DB层(DAO层)例如:一个删除的功能,伪代码如下
Class Controller extends HttpServlet
{
public void service(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
.................................
.................................
.................................
//根据提交内容,去Business层的删除方法
.................................
.................................
.................................
}
}我经常看这里有两种做法一种是:直接 写 Business 类.然后调用DAO
Class Business
{
public void delete(pageParameter _pageParameter)
{
new DAO().delete(_pageParameter);
}
}Class DAO
{
public int delete(pageParameter _pageParameter){
retrun JdbcTemplet.queryForList("delete Table where id = "+_pageParameter.getId())
}
}第二种:是写一个接口,然后写一个实现,然后调用DAO
public interface IBusiness
{
public void delete(pageParameter _pageParameter);
}Class Business implements IBusiness
{
public void delete(pageParameter _pageParameter)
{
new DAO().delete(_pageParameter);
}
}Class DAO
{
public int delete(pageParameter _pageParameter){
retrun JdbcTemplet.queryForList("delete Table where id = "+_pageParameter.getId())
}
}
我现在用ajax + spring 开发,经常看别人用第二种方式写!
把一个页面上业务先都写入接口.然后在继承实现.
实在不知道有什么好处!给我感觉都是多写一个接口,实在不知道好处在那里....知道的能说说吗?
你的同事可能用到你的这个功能,它可以完全不用等你把代码完成才能使用,可以自己先实现一个虚假的实现类。
比如class Business implements IBusiness {
public void delete(pageParameter _pageParameter) {
return true; // 可以虚假的测试成每次都成功,或者作规则返回false
}
}
class Business implements IBusiness {
public void delete(pageParameter _pageParameter) {
return;
}
}
但听归听,具体给你带来了什么好处可能还感触不多这类问接口作用的问题很多,即使有过几年工作经验的人仍然不明白
提个建议,你可以看看《head_first 设计模式解析》,里面说的比我明白
不过更重要的是你要多练,多找感觉
接口约定实现的一些方法,具体的类去实现这些接口
spring可以注入各个属性,这样每个类都不会依赖了
代码中声明的全是接口类型,和实现类没有关系
建议楼主看看 设计模式 之类的书
如:阎宏 的 《java与模式》
如果你想持久化数据,可以用DAO, 不想持久化 可以用XML,
但他们提供的接口都是一样的,只是实现不同罢了~
从实际的开发来说,分层的好处如 老紫竹 说的,但是不一定完全要那么刻板。
但是楼主作为一个框架的设计者,就应该严格恪守分层的原则。
public void delete(pageParameter _pageParameter) {
// 一般不会在方法中new的,采用成员变量方式,使用Spring来注入实现类
new DAO().delete(_pageParameter);
}
} interface IDAO {
public int delete(pageParameter _pageParameter);
}
class DAO implement IDAO extends JdbcTemplet {
public int delete(pageParameter _pageParameter) {
retrun queryForList("delete Table where id="+_pageParameter.getId());
}
}如果再做得好一点的话,可以采用泛型将基本的CRUD操作只要写一次就可以了,其他的DAO继承一下,这样可以每个DAO少写四个操作。
比如,用了interface之后,别的同事不用等你开发完再继续,他可以和你并行工作,缩短工期。
随时可以更换实现;
随时可以用动态代理,实现AOP。
原来是这么回事,我也一直使用第一种方法。。