設計模式練習(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();
    }
}

五、運行結果:

結果

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章