工廠模式
一、題目:
現需要設計一個程序來讀取多種不同類型的圖片格式,針對每一種圖片格式都設計一個圖片讀取器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();
}
}
五、運行結果: