OOP,WEB开发实用小技巧

  偶然读到一篇博客,记录一下心得。这种设计对于新手来说一般是想不到的,它充分的发挥了OOP语言的特性,让代码专用而清爽。这是不是重构的思想呢?

  我们在写业务层的时候,有很多方法是重复功能的,我们就可以使用泛型和继承等来减少荣域代码。

  下面是例子,它的思想就是把大量的公共代码全部做成基础类,比如增删查改。

  而增加的方法就专注于定义自身,不必再实现原来的方法。

package oop;

public interface BaseService <T>{
    public void add(T obj);
    public void delete(T obj);
    public void update(T obj);
}
package oop;

import org.hibernate.Session;
import org.hibernate.SessionFactory;

public class BaseServiceImpl<T> implements BaseService<T>{
    private SessionFactory ssf;
    public BaseServiceImpl(){
        System.out.println("基础服务类启动");
    }
    
    public SessionFactory getSsf() {
        return ssf;
    }
    //spring会注入
    public void setSsf(SessionFactory ssf) {
        this.ssf = ssf;
    }
    //获取当前线程的session
    protected Session getSession(){
        return ssf.getCurrentSession();
    }
    //基础服务方法
    @Override
    public void add(T obj) {
        // TODO Auto-generated method stub
        this.getSession().save(obj);
    }

    @Override
    public void delete(T obj) {
        // TODO Auto-generated method stub
        this.getSession().delete(obj);
    }
    @Override
    public void update(T obj) {
        // TODO Auto-generated method stub
        this.getSession().update(obj);
    }

}
package oop;

public interface UserService<T> extends BaseService<T>{
    public void addMethod1();
    public void addMethod2();
}
package oop;

public class UserServiceImpl extends BaseServiceImpl<Object> implements UserService<Object>{

    public UserServiceImpl(){
        System.out.println("扩展类启动");
    }
    @Override
    public void addMethod1() {
        // TODO Auto-generated method stub
        System.out.println("method1");
    }

    @Override
    public void addMethod2() {
        // TODO Auto-generated method stub
        System.out.println("method2");
    }





}

 

posted @ 2016-10-25 15:39  天目山电鳗  阅读(263)  评论(0编辑  收藏  举报