写点什么

设计模式的艺术 第五章工厂方法设计模式练习(设计一个程序来读取各种不同类型的图片格式,针对每种格式都设计一个图片读取器)

作者:代廉洁
  • 2022 年 8 月 30 日
    浙江
  • 本文字数:1124 字

    阅读完需:约 4 分钟

设计一个程序来读取各种不同类型的图片格式,针对每种格式都设计一个图片读取器。例如,GIF 图片读取器用于读取 GIF 格式的图片,JPG 图片读取器用于读取 JPG 格式的图片。需充分考虑系统的灵活性和可扩展性。

一、类结构图


抽象工厂角色类:设计为 ImageReaderFactory 接口,面向抽象产品角色类编程,包含接口方法 createImageReader();

具体工厂角色类:抽象工厂角色类 ImageReaderFactory 的实现类,实现 createImageReader()方法返回一个对应的具体产品角色类,包括具体工厂角色类 GifImageReaderFactory、具体工厂角色类 JpgImageReaderFactory;

抽象产品角色类:设计为 ImageReader 接口,包含接口方法 readImage();

具体产品角色类:抽象产品角色类 ImageReader 的实现类,实现抽象产品角色类 ImageReader 的接口方法 readImage(),包括具体产品角色类 GifImageReader、具体产品角色类 JpgImageReader。

二、典型实现代码

抽象图片读取器工厂类:抽象工厂角色类
public interface ImageReaderFactory {
ImageReader createImageReader();}
复制代码


抽象图片读取器类:抽象产品角色类
public abstract class ImageReader {
public abstract void readImage();
}
复制代码


GIF 图片读取器工厂类:具体工厂角色类
public class GifImageReaderFactory implements ImageReaderFactory{
@Override public ImageReader createImageReader() { return new GifImageReader(); }}
复制代码


JPG 图片读取器工厂类:具体工厂角色类
public class JpgImageReaderFactory implements ImageReaderFactory{    @Override    public ImageReader createImageReader() {        return new JpgImageReader();    }}
复制代码


GIF 图片读取器类:具体产品角色类
public class GifImageReader extends ImageReader{    @Override    public void readImage() {        System.out.println("读取GIF图片");    }}
复制代码


JPG 图片读取器类:具体产品角色类
public class JpgImageReader extends ImageReader{    @Override    public void readImage() {        System.out.println("读取JPG图片");    }}
复制代码


客户端代码:
public class Client {    public static void main(String[] args) {        ImageReaderFactory imageReaderFactory;        ImageReader imageReader;        imageReaderFactory = new GifImageReaderFactory();        imageReader = imageReaderFactory.createImageReader();        imageReader.readImage();        imageReaderFactory = new JpgImageReaderFactory();        imageReader = imageReaderFactory.createImageReader();        imageReader.readImage();    }}
复制代码


编译并运行程序,输出如下结果:
读取GIF图片读取JPG图片
复制代码


发布于: 刚刚阅读数: 3
用户头像

代廉洁

关注

还未添加个人签名 2019.10.15 加入

还未添加个人简介

评论

发布
暂无评论
设计模式的艺术 第五章工厂方法设计模式练习(设计一个程序来读取各种不同类型的图片格式,针对每种格式都设计一个图片读取器)_设计模式的艺术_代廉洁_InfoQ写作社区