что мешает lazy load делать с помощью механизма описанного в вики про proxy?а вот с lazy load - конечно, для этого наследование и создано
что мешает lazy load делать с помощью механизма описанного в вики про proxy?а вот с lazy load - конечно, для этого наследование и создано
Что мешает называть меня Вася? Ничего. В этом просто нет смысла, но не мешает ничего.что мешает lazy load делать с помощью механизма описанного в вики про proxy?
Т.е. вполне все реализуется. Без наследования.Существует четыре основных варианта ленивой загрузки.
- Virtual Proxy (Виртуальный Прокси) - объект с таким же интерфейсом, как и настоящий объект. При первом обращении к методу объекта, виртуальный прокси загружает настоящий объект и перенаправляет выполнение.
Я понял, что без наследования при lazy loading не обойтись. Что не является правдой.технической необходимости наследования в случае с proxy не то что нет, а не должно быть по определению
а вот с lazy load - конечно, для этого наследование и создано
Я уже говорил, но повторюсь. Duck typing - это в python (no typing is duck typing).с duck typing в golang/typescript
class Foo {
public someMethod(): void {
}
private somePrivateMethod(): void {
}
}
class Bar implements Foo {
public someMethod(): void {
}
}
$ tsc test.ts
test.ts:9:7 - error TS2720: Class 'Bar' incorrectly implements class 'Foo'. Did you mean to extend 'Foo' and inherit its members as a subclass?
Property 'somePrivateMethod' is missing in type 'Bar'.
class Foo {
public someMethod(foo: Foo): void {
foo.somePrivateMethod();
}
private somePrivateMethod(): void {
}
}
OK, авторы TypeScript придерживаются несколько иного представления, но терминология - не столь важноЯ уже говорил, но повторюсь. Duck typing - это в python (no typing is duck typing).
В golang и typescript - structural typing. И он проблему не решает.
да, как в LaravelЕсли, например, научить Doctrine-овский ProxyManager делать прокси, привязанные к заданному в конфигурации интерфейсу, то проблема с final решится - но возникает проблема с тем, что интерфейс для сущности не нужен и вреден.
базовый == абстрактный.- свой контроллер наследуем от базового контроллера
- свой валидатор от базового
- свою модель от базовой модели
Они просто не стали в рамках базовой документации излишне углубляться. Я уверен, что Anders Hejlsberg понимает разницу.авторы TypeScript придерживаются несколько иного представления
Тут это не абстрактные классы.базовый == абстрактный.
При наследовании от неабстрактного вы вот это вот из DIP
интерпретируете как зависимость от неабстракции (неабстрактного класса)?Модули верхних уровней не должны зависеть от модулей нижних уровней. Оба типа модулей должны зависеть от абстракций.
и это как раз плохая архитектура. Они должны быть абстрактными если расчет идет на то, что их будут наследовать.Тут это не абстрактные классы.