Lý do bạn muốn nghĩ bạn muốn thực hiện điều này là bạn đã tìm thấy chính mình trong một tình huống mà biến kiểu không đủ ngữ cảnh.
Ví dụ, tôi có thể đánh lừa bản thân mình nghĩ rằng tôi cần phải cung cấp cho hai lớp xây dựng của tôi: một trong đó hoạt động bằng X và Y, và một theo độ và radian. Cả hai có thể được biểu diễn dưới dạng float.
Vì vậy, tôi nghĩ rằng tôi cần hai nhà thầu có chữ ký giống hệt nhau (float, float).
Dr.Bloch chỉ ra rằng nó tốt hơn để thực hiện các phương pháp nhà máy:
public static Point newPointByDegreesAndRadians (float degrees, float radians);
public static Point newPointByXandY (float x, float y);
Ngẫu nhiên, khác thay thế cho phương pháp nhà máy là để tạo ra các loại mà mang bối cảnh đó là mất tích từ kiểu dữ liệu, như thế này:
public class CoordinatesXY {
float X;
float Y;
...
}
public class CoordinatesDegreesRadians {
float degrees;
float radians;
...
}
public Point (CoordinatesXY coordinates) { ... }
public Point (CoordinatesDegreesRadians coordinates) { ... }
Cho dù bạn nghĩ rằng điều này là rõ ràng hơn so với các phương pháp nhà máy là một vấn đề của hương vị. Đối với trường hợp cụ thể này, cảm giác của riêng tôi là hai lớp tọa độ chỉ được sử dụng nếu thiết kế của bạn làm cho tọa độ hữu ích theo cách riêng của chúng, tách biệt khỏi một điểm tại các tọa độ đó.
erm, bạn không thể, phải không? –
Đầu tiên, bạn có thể cho chúng tôi thấy một ví dụ biên dịch không? –
Đối với hồ sơ, bạn có nghĩa là hai nhà xây dựng * trong cùng một lớp * với cùng một chữ ký không? – harpo