Sam*_*m ツ 17 validation design-patterns
我相信我不是唯一一个面临这个问题的人,但到目前为止我无法找到解决办法.问题如下.
我从遗留系统发布了一个Web服务(我没有任何控制权,我无法更改它),并且所有客户端都在使用它.我收到来自Web服务和对象的请求,我得到的是一个非常复杂的请求但是为了举例说明我从Web服务调用接收对象A,其中包含其他几个对象,如对象B,对象C等等.另外,对象B和C也有一些原始数据类型以及其中的一些其他对象.我的问题是我要验证整个对象A(所有包括对象和子对象),这里推荐哪种设计模式?其次,这里的要点是我可以从Web服务获得不同类型的对象A. 我不同类型的对象A的真正含义是对象A依赖于客户端,即一些客户端将发送对象A而不填充包含对象B中的数据,或者甚至可以部分填充对象B然后在对象A中发送它所以我必须基于客户端验证对象A(因为一些客户端需要包含对象B,有些不会,有些将需要对象B中的少量元素等).所以换句话说,我将有一个地方,我也将存储每个客户端的验证规则,这将告诉我这样的事情,客户端ABC希望对象B中的字段abc是字符串类型,最大长度是25个字符,它必须在该字段中包含数据.
我想要执行的一些验证是
检查某些对象的字段(比如对象B)的数据类型,特定字段的长度,是该客户端所需的字段,还是可选的等等...
任何具体的工作示例都非常有用.
该特定示例的对象A的结构如下.
public class A
{
private B objectB;
private C objectC;
// and so on
}
public class B{
private E objectE;
private String name;
private int age;
// and so on
}
public class C
{
private F objectF;
private String address;
private String country;
}
public class E
{
// Members here
}
public class F
{
// Members here
}
Run Code Online (Sandbox Code Playgroud)
PS:我给了班级和成员任意的名字只是为了一般的理解.是的,我忘了提到我在这里使用java,但它并不重要,因为设计原则或模式可以应用于任何语言.希望很快能听到你们的意见.. :)
验证是一个跨领域的关注点.有几种方法可以实现几种设计模式.
在Asp.net中,它通过属性完成,在Java Spring中,它通过Annotations完成,以保持代码清洁,可读和可维护.
您可以找到大量不同的方法,您需要记住的是这些框架的方法如下.即代码维护,可读性和清洁代码.
没有银弹.您甚至可以在代码中编写验证.