Я работаю над простой проблемой, чтобы представить несколько типов, которые имеют иерархическую структуру. Существует строка данных, которая содержит некоторые данные, и данные могут различаться в зависимости от типа строки. Простая строка может иметь только заголовок и дату, а расширенная строка может содержать заголовок, описание, дату и изображение. Я не новичок в Javascript, но не понимаю его достаточно хорошо, чтобы двигаться вперед. Чтобы привести упрощенный пример, вот как я написал бы это на Java:
interface Row {
View getView();
}
class BasicRow implements Row {
private String title;
private String description;
public BasicRow(String title, String description) {
this.title = title;
this.description = description;
}
public View getView() {
// return a View object with title and description
}
}
class ExtendedRow implements Row {
private String title;
private String description;
private Date date;
private Image image;
public ExtendedRow(String title, String description, Date date, Image image) {
this.title = title;
this.description = description;
this.date = date;
this.image = image;
}
public View getView() {
// return a View object with title
// description, date, and image
}
}
Есть несколько улучшений ОО, которые можно сделать здесь, таких как расширение ExtendedRow из BasicRow и определение только новых полей плюс переопределение метода getView.
Javascript не имеет интерфейсов или абстрактных классов, и я боюсь, что еще не задумался в прототипическом смысле. Итак, как я могу реализовать что-то базовое, как в приведенном выше примере в Javascript, где есть базовый класс или интерфейс и два класса, расширяющихся от этого базового класса, каждый со своим собственным специфическим поведением.
Любые указатели приветствуются.