🍁 作者:知识浅谈,CSDN 签约讲师,CSDN 博客专家,华为云云享专家,阿里云专家博主
📌 擅长领域:全栈工程师、爬虫、ACM 算法
💒 公众号:知识浅谈
🔥 联系方式 vx:zsqtcc
🤞抽象工厂模式在项目开发中的应用🤞
正菜来了⛳⛳⛳
🎈何为抽象工厂模式
抽象工厂也可以称作其他工厂的工厂,它可以在抽象工厂中创建出其他工厂,与工厂模式一样,都是用来解决接口选择的问题,同样都属于创建型模式。顾名思义即为工厂的工厂,通过构建顶层的抽象工厂和抽象的产品,屏蔽系列产品的构建过程。
🎈举例深入体会
早期接入七牛云 OSS(对象存储服务)上传图片与视频,后因业务调整,公司要求额外支持阿里云、腾讯云等其他云服务商,并且可以对客户提供外界访问。设计要求为:允许在不破坏原有代码逻辑情况下,实现对任意三方云厂商的接入。
🍮抽象工厂
📍创建抽象工厂接口,里边含有上传图片和上传视频两个抽象接口,总的来说这个接口和里边的方法都是抽象层的接口。AbstractOssFactory:
public interface AbstractOssFactory {
public OssImage uploadImage(byte[] bytes);
public OssVideo uploadVideo(byte[] bytes);
}
复制代码
📍抽象工厂中的图像抽象接口 OssImage:
public interface OssImage {
public String getThumb(byte[] bytes);
public String getWatermark(byte[] bytes);
public String getEnhance(byte[] bytes);
}
复制代码
📍抽象工厂中的视频抽象接口 OssVideo:
public interface OssVideo {
public String get720P();
public String get1080P();
}
复制代码
📍创建一个工厂实现抽象工厂,之后的操作是根据这个工厂实现,在这个工厂中上传图像和上传视频的方法中使用的是我们已经实现的方法 OssImage 和 OssVideo 这两个类。
🍮工厂
AliyunOssFactory:
public class AliyunOssFactory implements AbstractOssFactory {
public OssImage uploadImage(byte[] bytes){
return new AliyunOssImage();
}
public OssVideo uploadVideo(byte[] bytes){
return new AliyunOssVideo();
}
}
复制代码
📍根据 OssImage 实现具体云平台的图像上传接口。AliyunOssImage:
public class AliyunOssImage implements OssImage {
public String getThumb(byte[] bytes){
return "AliyunOssImage->getThumb";
}
public String getWatermark(byte[] bytes){
return "AliyunOssImage->getWatermark";
}
public String getEnhance(byte[] bytes){
return "AliyunOssImage->getEnhance";
}
}
复制代码
📍根据 OssImage 实现具体云平台的视频上传接口。AliyunOssVideo:
public class AliyunOssVideo implements OssVideo {
public String get720P(){
return "AliyunOssVideo->get720P";
}
public String get1080P(){
return "AliyunOssVideo->get1080P";
}
}
复制代码
🍚总结
以上根据在网络上的学习实现的一个例子和总结,希望有所帮助。
评论