一、未使用spring前的麻烦
开闭原则:扩展是开放的,但是对于修改是“封闭的”。
1、代码耦合度比较高【不符合开闭原则】:
public class EmployeeServiceImpl implements IEmployeeService {
private IEmployeeDAO dao;
public EmployeeServiceImpl() {
//创建依赖对象
dao = new EmployeeDAOJdbcImpl();
}
public void save() {
//TODO
}
}
此时如果把IEmployeeDAO 的实现类换成 EmployeeDAOMyBatisImpl , 此时需要修改 EmployeeServiceImpl 的源代码,不符合开闭原则。
2、循环依赖问题(使用A类要先创建B类;使用B类要先创建C类;使用C类要先创建A类,循环啦。。。)
3、控制事务繁琐【不符合开闭原则】:
public class EmployeeServiceImpl implements IEmployeeService {
public void save ( ) {
try {
} catch ( Exception e) {
} finally {
}
}
}
■ 模板基类:
模板类:作为父类,处理通用算法功能,把不同的处理细节暴露给子类。
public class BaseServiceTemplate implements IEmployeeService {
public void save ( ) {
try {
this . doSave ( ) ;
} catch ( Exception e) {
} finally {
}
}
protected void doSave ( ) {
}
}
public class EmployeeServiceImpl extends BaseServiceTemplate implements IEmployeeService {
protected void doSave ( ) {
}
}
■ 使用第三方框架运用太麻烦:
Person p = new Person ( ) ;
SqlSession session = MyBatisUtil . getSession ( ) ;
PersonMapper personMapper = session. getMapper ( PersonMapper . class ) ;
personMapper. insert ( p) ;
session. commit ( ) ;
session. close ( ) ;