Tôi đang làm việc trên một dự án mà chúng tôi có một lớp trừu tượng (BaseConverter
) với một phương pháp trừu tượng (convert()
) và vài phương pháp cụ thể. Một phương pháp cụ thể quan trọng là invokeConverter()
về cơ bản sẽ gọi phương thức convert()
được triển khai trong lớp con.Gọi phương thức lớp con từ lớp siêu không phải là phương pháp hay nhất?
Trong khi mã của chúng tôi đang được xem xét bởi người khác, anh ta nói rằng, các phương thức lớp con không nên được gọi từ superclass và anh ta nói nó không phải là thực hành tốt nhất. Dưới đây là cấu trúc lớp học của chúng tôi. Ai đó có thể vui lòng cho biết đây không phải là cách phù hợp để làm không?
@Named
public abstract class BaseConverter{
@Inject
private ConversionDriver conversionDriver;//this class is responsible to return the correct subclass object based on the type
protected abstract String convert(Object toConvert);
public String invokeConverter(ConverterType type, Object toConvert){
conversionDriver.getConverter(type).convert(toConvert);//getConverter() return the subclass object based on the type
}
....
....
}
Bạn không gọi phương thức phân lớp. Bạn chỉ đang gọi phương thức ghi đè của lớp cha. Và đó là một trong những lý do để có phương pháp trừu tượng ở vị trí đầu tiên. Tôi không biết làm thế nào điều này sẽ được thực hành xấu. – Codebender
@Codebender, cảm ơn .. vâng, tôi biện minh với cùng câu trả lời nhưng anh chàng đó không bị thuyết phục và yêu cầu chúng tôi thay đổi cấu trúc. – whoami
hỏi anh chàng đó .... hãy để anh ta giải thích khi anh ta biết mã của bạn tốt. – Garry