基于接口,而非实现编程

public interface ImageStore {
String upload(Image image, String bucketName);
Image download(String url);
}

public class AliyunImageStore implements ImageStore {
//…省略属性、构造函数等…

public String upload(Image image, String bucketName) {
createBucketIfNotExisting(bucketName);
String accessToken = generateAccessToken();
//…上传图片到阿里云…
//…返回图片在阿里云上的地址(url)…
}

public Image download(String url) {
String accessToken = generateAccessToken();
//…从阿里云下载图片…
}

private void createBucketIfNotExisting(String bucketName) {
// …创建bucket…
// …失败会抛出异常…
}

private String generateAccessToken() {
// …根据accesskey/secrectkey等生成access token
}
}

// 上传下载流程改变:私有云不需要支持access token
public class PrivateImageStore implements ImageStore {
public String upload(Image image, String bucketName) {
createBucketIfNotExisting(bucketName);
//…上传图片到私有云…
//…返回图片的url…
}

public Image download(String url) {
//…从私有云下载图片…
}

private void createBucketIfNotExisting(String bucketName) {
// …创建bucket…
// …失败会抛出异常…
}
}

// ImageStore的使用举例
public class ImageProcessingJob {
private static final String BUCKET_NAME = “ai_images_bucket”;
//…省略其他无关代码…

public void process() {
Image image = …;//处理图片,并封装为Image对象
ImageStore imageStore = new PrivateImageStore(…);
imagestore.upload(image, BUCKET_NAME);
}
}
接口的定义只表明做什么,而不是怎么做。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值