平台的核心资源是各类组件、插件,在设计上,采用多层次封装,满足不同情况下的需求。以对象存储为例,平台可以对接多种对象存储平台,如MinIO,华为OSS等。在平台上可以调用统一的oss接口,通过配置对接不同对象存储平台:
public static InputStream getObject(String bucketName,String objectName) throws Exception {
if ("minio".equals(QLMContants.OSSSource)){
return MinioUtils.getObject(bucketName,objectName);
}
else if ("huawei".equals(QLMContants.OSSSource)){
return HuaweiOBSUtils.getObject(bucketName,objectName);
}
else{
return null;
}
}
开发产品时多采用这种方式,它可以一套代码适用于不同存储平台。
对于一个具体的项目,由于存储平台已经确定,也可以直接调用对应函数,如上述的MinioUtils.getObject(bucketName,objectName);
缓存处理也采用类似机制:
public String get(String key){
if ("Redis".equals(QLMContants.cacheMode)){
return redisutils.get(key);
}
else if ("Caffeine".equals(QLMContants.cacheMode)){
return (String)CaffeineUtils.get(key);
}
return "";
}
可以调用统一接口以获得适用性,也可以直接使用对应接口。