У меня есть два модуля с одинаковыми интерфейсами. Вместо того, чтобы дважды реализовать бизнес-логику c для каждого модуля, я создал класс abstract
с реализациями, а также создал метод abstract
, чтобы модуль мог действовать.
Итак, модуль класс расширит базовый класс и предоставит модуль. Теперь вся реализация будет действовать на предоставленном модуле.
Я хотел бы знать, часто ли следует этому шаблону. Если это так, как называется шаблон.
interface ModuleInterface {
name?: string;
age?: number;
}
abstract class Base {
protected abstract provideModule(): ModuleInterface;
getName() {
const module = this.provideModule();
return module.name;
}
getAge() {
const module = this.provideModule();
return module.age;
}
}
class Person1 extends Base {
provideModule() {
return {
name: 'John',
age: 27,
};
}
}
class Person2 extends Base {
provideModule() {
return {
name: 'Mike',
age: 29,
};
}
}
const person1 = new Person1();
const person2 = new Person2();
console.log(person1.getName());
console.log(person2.getName());