Một chỉ báo đơn giản về thời điểm một mẫu sẽ cải thiện mã của bạn, là khi bạn thấy rằng mã của bạn thường xuyên yêu cầu bạn chuyển một đối tượng sang một loại khác. Một ví dụ tôi tìm thấy trong mã Java của riêng mình, điều này đã kích hoạt tôi chuyển đổi chữ ký phương thức hiện có thành một mẫu:
public MsgBase getLastSentMessage(Class<? extends MsgBase> msgBaseClass)
Mã khách hàng của tôi luôn trông như thế này:
OrderResponse response = (OrderResponse) getLastSentMessage(OrderResponse.class);
và bất cứ khi nào tôi sử dụng phương thức đó, tôi phải đưa kết quả vào lớp con chính xác của loại MsgBase. Chữ ký phương thức được cải tiến là:
public <T extends MsgBase> T getLastSentMessage(Class<T> clazz)
Bây giờ mã khách hàng là:
OrderResponse response = getLastSentMessage(OrderResponse.class);
Vì vậy, để tóm tắt, nếu bạn thấy mình thực hiện nhiều thao tác đúc có vẻ không cần thiết, bạn có thể có một trường hợp tốt trong đó một mẫu sẽ dọn sạch mã của bạn.
Cập nhật: một cách tốt hơn để khái quát hóa tuyên bố trên:
Khi lớp nguồn của bạn sẽ được sử dụng bởi các đối tượng thuộc nhiều loại khác nhau và lớp nguồn có thể tương tác với các loại đó ở mức cao hơn (trừu tượng hơn), nhưng các lớp khách của bạn muốn tương tác với các kiểu con cụ thể, đó là trường hợp sử dụng các mẫu . (Các lớp Container / List là ví dụ nổi tiếng).