设计模式练习(2)——工厂模式

工厂模式

一、题目:

现需要设计一个程序来读取多种不同类型的图片格式,针对每一种图片格式都设计一个图片读取器ImgReader,如gif图片读取器GifReader用于读取gif格式的图片,jpg图片读取器JPGReader用于读取jpg格式的图片。图片读取器对象通过图片读取器工厂ImgReaderFactory来创建。ImgReaderFactory是一个抽象类,用于定义创建图片读取器的工厂方法,其GifReaderFactory和JPGReaderFactory用于创建具体的图片读取器对象。使用工厂方法模式,实现该程序的设计。
(1)绘制工厂模式结构视图
(2)给出实例类图并实现代码。

二、所用模式结构视图:

工厂模式

三、实例类图:

工厂模式

四、实例实现代码:

(因为区分,所以在类的前面加了Gj19)

抽象产品ImgReader:

package FactoryPattern;
/**
 * 抽象产品ImgReader
 * @author gong
 *
 */
public interface Gj19ImgReader {
    public void read();
}

具体产品GifReader:

package FactoryPattern;
/**
 * 具体产品GifReader
 * @author gong
 *
 */
public class Gj19GifReader implements Gj19ImgReader{

    @Override
    public void read() {
        System.out.println("读取gif格式的图片");
    }

}

具体产品JPGReader:

package FactoryPattern;
/**
 * 具体产品JPGReader
 * @author gong
 *
 */
public class Gj19JPGReader implements Gj19ImgReader{

    @Override
    public void read() {
        System.out.println("读取JPG格式的图片");
    }

}

抽象工厂ImgReaderFactory:

package FactoryPattern;
/**
 * 抽象工厂ImgReaderFactory
 * @author gong
 *
 */

public interface Gj19ImgReaderFactory {
    public Gj19ImgReader getGj19ImgReader();
}

具体工厂GifReaderFactory:

package FactoryPattern;
/**
 * 具体工厂GifReaderFactory
 * @author gong
 *
 */
public class Gj19GifReaderFactory implements Gj19ImgReaderFactory {

    @Override
    public Gj19ImgReader getGj19ImgReader() {
        Gj19ImgReader gj19ImgReader = new Gj19GifReader();
        return gj19ImgReader;
    }

}

具体工厂JPGReaderFactory:

package FactoryPattern;
/**
 * 具体工厂JPGReaderFactory
 * @author gong
 *
 */
public class Gj19JPGReaderFactory implements Gj19ImgReaderFactory {

    @Override
    public Gj19ImgReader getGj19ImgReader() {
        Gj19ImgReader gj19ImgReader = new Gj19JPGReader();
        return gj19ImgReader;
    }

}

测试工厂模式:

package FactoryPattern;
/**
 * 测试工厂模式
 * @author gong
 *
 */
public class Gj19Test {
    public static void main(String[] args) {
        Gj19ImgReaderFactory gj19ImgReaderFactory = new Gj19GifReaderFactory();
        gj19ImgReaderFactory.getGj19ImgReader().read();
    }
}

五、运行结果:

结果

  • 20
    点赞
  • 118
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值