Các mẫu design pattern – kiến tạo – Factory Method

Posted: December 21, 2015 in Design Pattern, Uncategorized

Factory method, đầy đủ là Factory method pattern, là thiết kế mẫu hướng đối tượng trong việc thiết kế phần mềm cho máy tính, nhằm giải quyết vấn đề tạo một đối tượng mà không cần thiết chỉ ra một cách chính xác lớp nào sẽ được tạo. Factory method giải quyết vấn đề này bằng cách định nghĩa một phương thức cho việc tạo đối tượng, và các lớp con thừa kế có thể override để chỉ rõ đối tượng nào sẽ được tạo. Nói chung, “factory method” thường được áp dụng cho những phương thức mà nhiệm vụ chính của nó là tạo ra đối tượng.

Thực ra nó là polymorphism mà thôi. Ví dụ :

public interface ImageReader {
     public DecodedImage getDecodedImage();
}

public class GifReader implements ImageReader {

     public GifReader( InputStream in ) {
         // check that it's a gif, throw exception if it's not, then if it is
         // decode it.
     }

     public DecodedImage getDecodedImage() {
        return decodedImage;
     }
}

public class JpegReader implements ImageReader {
     //....
}
//Mỗi khi chương trình đọc một ảnh, nó cần phải tạo một đối tượng phù hợp để đọc ảnh đó dựa vào những thông tin trong tập tin. Việc này có thể gói gọn trong factory method:

public class ImageReaderFactory {

    public static ImageReader getImageReader( InputStream is ) {

        int imageType = figureOutImageType( is );

        switch( imageType ){
            case ImageReaderFactory.GIF:
                return new GifReader( is );
            case ImageReaderFactory.JPEG:
                return new JpegReader( is );
            // etc.
        }
    }
}

Tham khảo : https://vi.wikipedia.org/wiki/Factory_method

Leave a comment