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"); } }