我正在阅读HTTP POST,HTTP请求的主体可以是JSON或XML.现在我已将读取委托给一个特殊的实用程序类.
interface HttpUtils
{
BodyWrapper parseBody( HttpServletRequest req );
}
interface BodyWrapper
{
boolean isXML(); // 1
boolean isJSON(); // 2
String body(); // 3
}
Run Code Online (Sandbox Code Playgroud)
不要向对象询问信息,然后就他们告诉您的内容做出决定.让您的对象为您完成工作.也就是说,不要这样做:
if (body.isXML()) {
// do XML stuff
}
else if (body.isJSON()) {
// do JSON stuff
}
Run Code Online (Sandbox Code Playgroud)
这是一个维护问题.做这样的事情(BodyWrapper实现将使用抽象工厂方法或类似方法创建)
public interface BodyWrapper {
Object doStuff();
}
public class DOMBodyWrapper implements BodyWrapper {
public Object doStuff() {
}
}
public class JSONBodyWrapper implements BodyWrapper {
public Object doStuff() {
// do something and return a success/failure result. I've
// deliberately not defined what this object is....
}
}
Run Code Online (Sandbox Code Playgroud)
然后:
// get the body via a factory or similar
body.doStuff();
Run Code Online (Sandbox Code Playgroud)
这样,某些东西会创建适当的BodyWrapper实现,然后不再询问它是什么类型,而只是使用它.请注意,BodyWrapper不会返回不同类型的内部结构,因为它(可能是一个抽象基类)正在为您完成工作.
| 归档时间: |
|
| 查看次数: |
251 次 |
| 最近记录: |