设计模式之工厂方法模式应用例题

Posted shangzh!

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了设计模式之工厂方法模式应用例题相关的知识,希望对你有一定的参考价值。

设计模式之工厂方法模式应用例题

题目描述

现需要设计一个程序来读取多种不同类型的图片格式,针对每一种图片格式都设计一个图片读取器(ImageReader),如GIF图片读取器(GifReader)用于读取GIF格式图片、JPEG图片读取器(JPEG)用于读取JPEG格式的图片。图片读取器对象通过图片读取器工厂ImageReaderFactory来创建。请使用工厂方法模式实现该程序的设计,绘制类结构图、类图说明及编写相应代码

类结构图及相关说明


ImageReader接口:抽象产品,它ImageReader接口是定义产品的接口,是工厂方法模式所创建对象的超类型,也就是产品对象的公共父类。ImageReader接口中声明了抽象方法read()。
GifReader类:具体产品类,它GifReader类实现了抽象产品接口ImageReader接口,实现Gif的read方法。具体产品GifReader类由专门的具体工厂GifReaderFactory类创建,具体工厂GifReaderFactory类和具体产品GifReader类之间一一对应。
JPEG类:具体产品类,它JPEG类实现了抽象产品接口ImageReader接口,实现JPEG的read方法。具体产品JPEG类由专门的具体工厂JPEGFactory类创建,具体工厂JPEGFactory类和具体产品JPEG类之间一一对应。
ImageReaderFactory接口:抽象工厂类,在抽象工厂类ImageReaderFactory接口中声明了工厂方法getImgerReader(),用于返回一个产品。抽象工厂是工厂方法模式的核心,所有创建对象的工厂类都必须实现接口。
GifReaderFactory类:具体工厂类,它GifReaderFactory类是抽象工厂类ImageReaderFactory接口的子类,实现了在抽象工厂ImageReaderFactory接口中声明的工厂方法getImgerReader,并可由客户端Client类调用,返回一个具体产品类的实例imageReader。
JPEGFactory类:具体工厂类,它JPEGFactory类是抽象工厂类ImageReaderFactory接口的子类,实现了在抽象工厂ImageReaderFactory接口中声明的工厂方法getImgerReader(),并可由客户端Client类调用,返回一个具体产品类的实例imageReader。

程序代码

ImageReader接口

//抽象产品,产品接口
public interface ImageReader 
    //定义抽象类方法read
    public void read();

GifReader类

//具体产品,实现抽象产品接口
public class GifReader implements ImageReader
    //重写read方法,定义Gif图片的read方法
    @Override
    public void read() 
        System.out.println("读取Gif格式图片!!!");
    

JPEG类

//具体产品,实现抽象产品接口
public class JPEG implements ImageReader
    //重写read方法,定义JPEG图片的read方法
    @Override
    public void read() 
        System.out.println("读取JPEG格式的图片!!!");
    

ImageReaderFactory接口

//抽象工厂
public interface ImageReaderFactory 
    //声明工厂方法,用于返回一个产品
    public ImageReader getImgerReader();

JPEGFactory类

//具体工厂,抽象工厂类的子类,实现在抽象工厂中声明的方法
public class JPEGFactory implements ImageReaderFactory
    //实例化JPEG工厂返回具体产品
    @Override
    public ImageReader getImgerReader() 
        ImageReader imageReader = new JPEG();
        return imageReader; //返回一个具体产品
    

GifReaderFactory类

//具体工厂,抽象工厂类的子类,实现在抽象工厂中声明的方法
public class GifReaderFactory implements ImageReaderFactory
    //实例化Gif工厂并且返回具体产品
    @Override
    public ImageReader getImgerReader() 
        ImageReader imageReader = new GifReader();
        return imageReader;//返回一个具体产品
    

Client类

//客户端测试类
public class Client 
    public static void main(String[] args) 
        ImageReaderFactory imageReaderFactory1 = new GifReaderFactory();
        ImageReaderFactory imageReaderFactory2 = new JPEGFactory();

        imageReaderFactory1.getImgerReader().read();
        imageReaderFactory2.getImgerReader().read();
    

运行结果

CSDN 社区图书馆,开张营业! 深读计划,写书评领图书福利~

以上是关于设计模式之工厂方法模式应用例题的主要内容,如果未能解决你的问题,请参考以下文章

java设计模式 -------- 创建模式 之 抽象工厂模式

设计模式之 简单工厂模式

应用最广泛的模式-工厂方法模式

Java设计模式之二 ----- 工厂模式

Java设计模式之二工厂模式

设计模式--10工厂方法和抽象工厂模式