Tôi có rất nhiều nhà máy (trừu tượng) và chúng thường được triển khai dưới dạng đơn."Singleton" nhà máy, ok hay xấu?
Thông thường để thuận tiện cho việc không phải vượt qua chúng thông qua các lớp thực sự không có kinh doanh với việc sử dụng hoặc biết các nhà máy này.
Hầu hết các lần tôi chỉ cần đưa ra quyết định lúc khởi động trong đó nhà máy thực hiện phần còn lại của chương trình mã, có thể thông qua một số cấu hình
nó trông giống ví dụ giống như
abstract class ColumnCalculationFactory {
private static ColumnCalculationFactory factory;
public static void SetFactory(ColumnCalculationFactory f) {
factory = f;
}
public static void Factory() {
return factory;
}
public IPercentCalculation CreatePercentCalculation();
public IAverageCalculation CreateAverageCalculation();
....
}
Thỉnh thoảng có mùi về điều này, tôi chỉ không chắc chắn điều gì - nó có thể bị ảnh hưởng toàn cầu hơn một singleton. Nó không giống như thực sự thực sự phải là chỉ có một nhà máy bao giờ tạo ColumnCalculations - mặc dù chương trình của tôi không cần nhiều hơn nữa.
Điều này có được coi là thực tiễn tốt nhất không? Tôi có nên thay thế những thứ này trong một lớp AppContext toàn cầu (bán)? Một cái gì đó khác (Tôi không hoàn toàn sẵn sàng để chuyển sang một số container IoC lớn hơn, hoặc spring.net khá btw)?
mặc dù được đặt trước công chúng SetFactory không đảm bảo ai đó không thể trao đổi thêm lộn xộn với nhà máy, tôi thường dường như chỉ đặt nhà máy khi khởi động dựa trên cấu hình ban đầu hoặc cấu hình. – leeeroy
sau đó bạn rơi vào con mồi đối với nhược điểm của những người độc thân ... họ là những người độc thân. – coppro