Qua các series tự học về Design Pattern, Hôm nay cafedevn chia sẻ cho ace ví dụ và code cụ thể về cách sử dụng Factory Method với ngôn ngữ lập trình Java. Nhằm giúp ace hiểu rõ cách sử Pattern này với Java một cách nhanh nhất và áp dụng nó vào thực tế.
Nội dung chính
Mô tả code:
Trong lập trình dựa trên lớp, factory method pattern là một creational pattern sử dụng các phương thức để giải quyết vấn đề tạo đối tượng mà không cần phải chỉ định chính xác lớp của đối tượng sẽ được tạo. Điều này được thực hiện bằng cách tạo các đối tượng bằng cách gọi một phương thức gốc— hoặc được chỉ định trong một giao diện và được thực hiện bởi các lớp con, hoặc được thực hiện trong một lớp cơ sở và được ghi đè tùy chọn bởi các lớp dẫn xuất — chứ không phải bằng cách gọi một phương thức khởi tạo.
Phần code
/*
Cafedev.vn - Kênh thông tin IT hàng đầu Việt Nam
@author cafedevn
Contact: cafedevn@gmail.com
Fanpage: https://www.facebook.com/cafedevn
Group: https://www.facebook.com/groups/cafedev.vn/
Instagram: https://instagram.com/cafedevn
Twitter: https://twitter.com/CafedeVn
Linkedin: https://www.linkedin.com/in/cafe-dev-407054199/
Pinterest: https://www.pinterest.com/cafedevvn/
YouTube: https://www.youtube.com/channel/UCE7zpY_SlHGEgo67pHxqIoA/
*/
interface ImageReader {
DecodedImage getDecodeImage();
}
class DecodedImage {
private String image;
public DecodedImage(String image) {
this.image = image;
}
@Override
public String toString() {
return image + ": is decoded";
}
}
class GifReader implements ImageReader {
private DecodedImage decodedImage;
public GifReader(String image) {
this.decodedImage = new DecodedImage(image);
}
@Override
public DecodedImage getDecodeImage() {
return decodedImage;
}
}
class JpegReader implements ImageReader {
private DecodedImage decodedImage;
public JpegReader(String image) {
decodedImage = new DecodedImage(image);
}
@Override
public DecodedImage getDecodeImage() {
return decodedImage;
}
}
public class FactoryMethodDemo {
public static void main(String[] args) {
DecodedImage decodedImage;
ImageReader reader = null;
String image = args[0];
String format = image.substring(image.indexOf('.') + 1, (image.length()));
if (format.equals("gif")) {
reader = new GifReader(image);
}
if (format.equals("jpeg")) {
reader = new JpegReader(image);
}
assert reader != null;
decodedImage = reader.getDecodeImage();
System.out.println(decodedImage);
}
}
Cài ứng dụng cafedev để dễ dàng cập nhật tin và học lập trình mọi lúc mọi nơi tại đây.
Tài liệu từ cafedev:
- Full series tự học Design Pattern từ cơ bản tới nâng cao tại đây nha.
- Các nguồn kiến thức MIỄN PHÍ VÔ GIÁ từ cafedev tại đây
Nếu bạn thấy hay và hữu ích, bạn có thể tham gia các kênh sau của cafedev để nhận được nhiều hơn nữa:
Chào thân ái và quyết thắng!