Nhiều người nói rằng họ đang sử dụng mẫu nhà máy trong dự án của họ. Nhưng khi tôi thực sự nhìn thấy thực hiện của họ, nó trông hoàn toàn khác nhau từ định nghĩa những gì tôi đã đọc trong đầu cuốn sách đầu tiên. Trong cuốn sách họ đã mô tả hai loại mô hình nhà máy tức làCác câu hỏi liên quan đến mẫu Nhà máy
Factory Method: - Một lớp học quy định cụ thể sub-lớp học của mình để xác định các đối tượng để tạo ra dựa trên một số thông số. Vì vậy, chúng tôi hy vọng đây một số phương pháp trừu tượng trong lớp cơ sở whihich sẽ được thực hiện bởi con lớp và pupose điều đó sẽ tạo ra một số đối tượng
Abstract Factory: - Cung cấp một nhà máy (dưới hình thức giao diện hoặc trừu tượng nhà máy) để tạo gia đình của các đối tượng liên quan hoặc phụ thuộc mà không chỉ định các lớp bê tông của chúng.
Tôi có câu hỏi ở đây về ý nghĩa của họ đối với các đối tượng phụ thuộc hoặc liên quan . Cho phép tham khảo http://www.apwebco.com/gofpatterns/creational/AbstractFactory.html. Theo hiểu biết của tôi, điều đó có nghĩa là trong FinancialToolsFactory
(trong liên kết) có thể tạo ra TaxProcessor
là một nhóm sản phẩm mà các sản phẩm tương tác actuall là CanadaTaxProcessor
và EuropeTaxProcessor
. Vì vậy, ở đây chúng tôi sẽ có n
số nhà máy bê tông (trong trường hợp này là CanadaFinancialToolsFactory
và EuropeFinancialToolsFactory
) sẽ được mở rộng/triển khai nhà máy trừu tượng trong trường hợp này là FinancialToolsFactory
.
Vui lòng cho tôi biết nếu sự hiểu biết ở trên là chính xác vì tôi nghĩ đó là mấu chốt của mẫu Nhà máy.
Câu hỏi thứ hai:
Nội dung mọi người đang làm vào tên của mô hình nhà máy là dưới đây:
public class MyFactory
{
public static <T> T getObject(Class<T> cls)
{
if (cls == null)
{
throw new IllegalArgumentException("Invalid className");
}
T daoObject = (T)map.get(cls);
if (daoObject == null)
{
daoObject = loadObject(cls);
}
return daoObject;
}
}
Họ chỉ đi qua lớp như Example.class từ phương pháp chính và nhận được trường hợp đối tượng cho lớp học cụ thể đó. Bây giờ nếu chúng ta đi theo khái niệm thực tế của mô hình nhà máy được mô tả trong đầu (từ đầu cuốn sách đầu tiên) và các trang web khác nó không theo bất kỳ của hai mô hình nhà máy. Đối với tôi, nó trông giống như một lớp tiện ích trong đó chúng ta đang chuyển lớp và nhận cá thể đối tượng. Vui lòng cho tôi biết nếu bạn đồng ý với điều này?
Javadoc có nói rằng đây là việc triển khai mẫu nhà máy cổ điển như được giải thích trong những cuốn sách đó không? –
Tôi đồng ý 100% cho câu hỏi thứ hai. Đó là "đăng ký tải chậm", không phải là "nhà máy" –