偶然读到一篇博客,记录一下心得。这种设计对于新手来说一般是想不到的,它充分的发挥了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");
} }