7

Vì tôi hiểu Phương thức Nhà máy là Nhà máy Đơn giản và Đối tượng Nhà máy là Nhà máy Trừu tượng? Và:Phương pháp Nhà máy VS Đối tượng Nhà máy

-Nhà máy Method (Simple Factory):

public class SimplePizzaFactory { 
    public static final int CHEESE = 1; 
    public static final int PEPPERONI = 2; 
    public static final int VEGGIE = 3; 

    public static Pizza createPizza(int type) { 
     Pizza pizza = null; 

     if (type == CHEESE) { 
      pizza = new CheesePizza(); 
     } else if (type == PEPPERONI) { 
      pizza = new PepperoniPizza(); 
     } else if (type == VEGGIE) { 
      pizza = new VeggiePizza(); 
     } 

     return pizza; 
    } 
} 

Factory Object (Abstract Factory):

?

Tôi có đúng không?

Có bao nhiêu việc thực hiện các mẫu Nhà máy và sự khác biệt của chúng là gì?

+0

bạn nói đúng, cảm ơn – drifter

+0

Một điều khác, trừ khi bạn đang sử dụng một số phiên bản Java cổ, hãy sử dụng enum thay vì int để liệt kê các loại pizza có thể. – Renato

+0

+1, tôi đã tìm thấy ví dụ cổ đại này (Java chưa có thời gian). – drifter

Trả lời

6

No. Phương pháp nhà máy là nhà máy không yêu cầu bất kỳ trạng thái nào. Một lớp nhà máy là một lớp chính nó - nó có trạng thái và các phương thức làm thay đổi trạng thái đó. Cuối cùng, bạn gọi phương thức .create() và nó sử dụng trạng thái hiện tại của nó để tạo đối tượng mới của một loại khác.

Nhà máy trừu tượng là một điều khác - bạn có nhiều triển khai nhà máy của cùng một khái niệm trừu tượng. Các wikipedia example là về e GUIFactory - đây là một nhà máy trừu tượng, có hai triển khai: WinFactoryOSXFactory. Mã máy khách không biết cài đặt nào đang sử dụng - nó chỉ biết nhà máy tạo ra các phiên bản Button. Mà làm cho nó có thể viết cùng một mã bất kể hệ điều hành.

+0

Vì vậy, có 3 loại chính: - Nhà máy - Nhà máy trừu tượng - Phương pháp nhà máy ? – drifter

+0

vâng, đúng vậy. Phương pháp nhà máy và nhà máy không khác nhau nhiều. – Bozho

+0

Câu trả lời của bạn là rõ ràng. Tôi hiểu sự khác biệt giữa phương pháp Nhà máy và nhà máy, nhưng cách nào tốt hơn để sử dụng? và tại sao? – grep

Các vấn đề liên quan