假设我有一个管理Books的Web服务。所以我有createBook
,readBook
,editBook
等Web方法。对于每个Web方法,我都在寻找一种需要按特定顺序调用某些函数的设计,比如checkPermissions
,然后是validateInput
,然后是execute
,依此类推。问题是,因为它们是Web方法,我不知道是否可以应用任何设计模式 - 我知道我可以使用类和模板模式完全解决它,但是看起来非常奇怪只实现一个Web方法。
我正在尝试这样做,以便正确地重构我的Web方法。目前,每个Web方法实现必须确保 - 遵循序列 - 手动而非设计 - 在所有Web方法中也重复一些代码行,并且一些方法在方法代码中执行验证过程,导致相当长的有更多行进行检查而不是做实际工作的方法,看起来非常丑陋和混乱。
也许我唯一的解决方案是尝试识别重复的代码并将其从我的Web方法代码中移开(无法对它们强制执行结构)。
有没有办法重新组织我的Web方法?
提前告诉你。
答案 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(){
...
}
}