在处理不同云存储的 SDK 和接口调用时可以使用策略模式加工厂模式实现了灵活的云存储上传处理
- 策略模式:可以为每个云存储(如阿里云、腾讯云等)创建一个策略类,实现统一的接口,来封装不同的上传逻辑。
- 工厂模式:创建一个工厂类,根据配置或用户输入来生成对应的云存储策略对象,从而实现灵活的选择和切换不同的云存储服务。
interface CloudStorageStrategy {void uploadData(String data);
}class AlibabaCloudStrategy implements CloudStorageStrategy {@Overridepublic void uploadData(String data) {// 阿里云的上传逻辑System.out.println("上传数据到阿里云: " + data);}
}class TencentCloudStrategy implements CloudStorageStrategy {@Overridepublic void uploadData(String data) {// 腾讯云的上传逻辑System.out.println("上传数据到腾讯云: " + data);}
}interface CloudStorageFactory {CloudStorageStrategy createStrategy(String cloudType);
}class CloudStorageFactoryImpl implements CloudStorageFactory {@Overridepublic CloudStorageStrategy createStrategy(String cloudType) {if ("Alibaba".equalsIgnoreCase(cloudType)) {return new AlibabaCloudStrategy();} else if ("Tencent".equalsIgnoreCase(cloudType)) {return new TencentCloudStrategy();}// 可以添加对其他云的处理或者抛出异常throw new IllegalArgumentException("不支持的云存储类型: " + cloudType);}
}public class CloudStorageUploader {private CloudStorageStrategy strategy;public CloudStorageUploader(CloudStorageFactory factory, String cloudType) {this.strategy = factory.createStrategy(cloudType);}public void upload(String data) {strategy.uploadData(data);}public static void main(String[] args) {CloudStorageFactory factory = new CloudStorageFactoryImpl();CloudStorageUploader uploaderToAlibaba = new CloudStorageUploader(factory, "Alibaba");uploaderToAlibaba.upload("测试数据");CloudStorageUploader uploaderToTencent = new CloudStorageUploader(factory, "Tencent");uploaderToTencent.upload("测试数据");}
}
代码运行:
在上述代码中,通过策略模式定义了不同云存储的上传策略,工厂模式根据输入的云类型创建相应的策略对象,实现了灵活的云存储上传处理