Есть ли название для этого шаблона в JS / TS? - PullRequest
0 голосов
/ 29 апреля 2020

У меня есть два модуля с одинаковыми интерфейсами. Вместо того, чтобы дважды реализовать бизнес-логику 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());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...