设计模式:Java EE Web方法必须遵循一系列内部方法,但如何?

时间:2018-02-16 20:14:22

标签: java-ee design-patterns

假设我有一个管理Books的Web服务。所以我有createBookreadBookeditBook等Web方法。对于每个Web方法,我都在寻找一种需要按特定顺序调用某些函数的设计,比如checkPermissions,然后是validateInput,然后是execute,依此类推。问题是,因为它们是Web方法,我不知道是否可以应用任何设计模式 - 我知道我可以使用类和模板模式完全解决它,但是看起来非常奇怪只实现一个Web方法。

我正在尝试这样做,以便正确地重构我的Web方法。目前,每个Web方法实现必须确保 - 遵循序列 - 手动而非设计 - 在所有Web方法中也重复一些代码行,并且一些方法在方法代码中执行验证过程,导致相当长的有更多行进行检查而不是做实际工作的方法,看起来非常丑陋和混乱。

也许我唯一的解决方案是尝试识别重复的代码并将其从我的Web方法代码中移开(无法对它们强制执行结构)。

有没有办法重新组织我的Web方法?

提前告诉你。

1 个答案:

答案 0 :(得分:1)

模板模式是个好主意。

  

但是只要实现一个完整的类就会很奇怪   一种网络方法。

不是不会。您有一个要在不同情况下应用的通用算法。 Web方法是技术层 不要专注于它来设计它的实现。

拆分Web服务的每个方法的逻辑,这些方法在不同的类中呈现相同的框架算法,这些类都将是模板基类的子类,并在模板基类中定义所有Web服务方法的常见行为。

抽象模板类:

public abstract class BookProcessing {
    public void action() {
        checkPermissions();
        commonProcessing(); // if required. To not repeat code
        validateInput();
        execute();        
    }

    public abstract void checkPermissions();
    public abstract void validateInput();
    public abstract void execute();

    private void  commonProcessing(){
        // define common processing if required
    }
}

子类:

public class CreateBookProcessing extends BookProcessing {        

    public void checkPermissions(){
         ...
    }
    public void validateInput(){
         ...
    }
    public void execute(){
         ...
    }

}