重构常用方法页眉和页脚

Jus*_*ong 1 java refactoring

我在大量方法中出现了以下大量的页眉和页脚代码.是否有更清洁的方式来实现这一点?

 Session sess = factory.openSession();
 Transaction tx;
 try {
     tx = sess.beginTransaction();
     //do some work
     ...
     tx.commit();
 }
 catch (Exception e) {
     if (tx!=null) tx.rollback();
     throw e;
 }
 finally {
     sess.close();
 }
Run Code Online (Sandbox Code Playgroud)

有问题的类实际上是一个EJB 2.0 SessionBean,它看起来像:

public class PersonManagerBean implements SessionBean {
    public void addPerson(String name) {
        // boilerplate
        // dostuff
        // boilerplate
    }

    public void deletePerson(Long id) {
        // boilerplate
        // dostuff
        // boilerplate
    }
}
Run Code Online (Sandbox Code Playgroud)

rsp*_*rsp 6

如果您可以适应// do some work策略模式,则可以创建一个包含样板代码的方法,将该操作作为参数传递;

void executeWork(WorkInterface work) {
Session sess = factory.openSession();
 Transaction tx;
 try {
     tx = sess.beginTransaction();

     work.execute();

     tx.commit();
 }
 catch (Exception e) {
     if (tx!=null) tx.rollback();
     throw e;
 }
 finally {
     sess.close();
 }
Run Code Online (Sandbox Code Playgroud)

只要您不必将许多参数传递给execute()方法,此模式就适合.