前言
对于第三方接口进行交互的时候,往往需要大量的进行参数合法性校验。以前的方法就是对每个参数进行验证。如下截图:

上图的会存在大量的if else if else..,如果字段很多,那导致一个方法存在大量的验证的代码,那我们考虑是否可以进行统一的验证参数的合法性。
思路
平时建立类的时候我们可以写参数MAXLEN=100,TRUNCATE=1 是否截取等,那找找这些参数的定义地方。如截图:
那我们想要定义自己的参数,该如何定义呢?根据面向对象设计原则之一:
里氏替换原则(Liskov Substitution Principle,LSP):子类型必须能够替换掉他们的基类型。即,在任何父类可以出现的地方,都可以用子类的实例来赋值给父类型的引用。当一个子类的实例应该能够替换任何其超类的实例时,它们之间才具有是一个 (is-a) 关系
那我们可以自定义数据类型,继承%Library.String,这样子类继续使用父类的参数,还可以自定义自己的参数。此处以字符串为例,其他的数据类型一样的原理。 自定义类型就为String.
实现
- 自定义数据类型
`
/// 自定义数据类型实现继承的String
Class Design.DataType.String Extends %Library.String
{
/// 是否为空 1 必填 0 可以为空
Parameter NOTBLANK = 0;
/// 代码值,写取global的表达式? $XECUTE 执行?
Parameter DICCODE;
/// 不为空的错误消息
Parameter MESSAGE;
/// 错误码值错误
Parameter CODEERRMESSAGE;
/// 类型 INT,STRING,FLOAT,NUMBER,DATE,DATETIME
Parameter TYPE = "STRING";
/// 是否时间类型
Parameter ISDATE = 0;
/// 时间格式:yyyy-MM-dd=>3 yyyyMMdd=8 dd/MM/yyyy=1 默认
Parameter DATEFORMAT = 3;
/// 条件取值验证
Parameter CONDITION;
/// 是否需要在当前时间之后,比如预约时间
Parameter ISAFTER;
/// 是否在当前直接之前 比如出生日期
Parameter ISBEFORE;
}
%20(3).jpg)
IRIS老是断网是什么原因呢?网络没问题。
.png)





