Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   [Паттерны] Объединение методов с одинаковой реализацией (http://www.flasher.ru/forum/showthread.php?t=215703)

Appleman 31.03.2019 15:20

Цитата:

Сообщение от Bletraut (Сообщение 1206415)
Это костыль какой-то.

Вам шашечки или ехать?

На мой взгляд, ни фига не костыль, а вполне себе системное решение. У меня, конечно, опыта немного - всего пара лет самостоятельного изучения, но я не могу представить себе ситуацию обхода подобной конструкции. В моём представлении, функционально работает в точности как абстрактный класс. Или я не прав?

Bletraut 01.04.2019 18:02

Цитата:

В моём представлении, функционально работает в точности как абстрактный класс. Или я не прав?
За исключением того, что от абстрактных классов нельзя создавать экземпляры и абстракция подразумевает обязательного наследника. А здесь можно и экземпляр создать и метод вызвать.

Хотя ничего не мешает этот throw и в конструктор поместить, но тогда у абстрактного суперкласса не будет реализации конструктора.

caseyryan 01.04.2019 20:34

Цитата:

Сообщение от Appleman (Сообщение 1206420)
Вам шашечки или ехать?

На мой взгляд, ни фига не костыль, а вполне себе системное решение. У меня, конечно, опыта немного - всего пара лет самостоятельного изучения, но я не могу представить себе ситуацию обхода подобной конструкции. В моём представлении, функционально работает в точности как абстрактный класс. Или я не прав?

Если не вызывать метод, то ничего не произойдет. Другой вариант, вызов метода внутри try / catch блока, без вывода стек трейса.

Appleman 01.04.2019 20:41

Bletraut, caseyryan, да, сорри. Я имел в виду "абстрактный метод", а не "абстрактный класс". Оговорился.

RedHead90 02.04.2019 19:11

Тоже такое когда-то использовал, но от ощущения костыльности решения при этом избавиться не получалось. Как-то видел, как один кулхацкер таким макаром абстрактные классы делал, кидая в конструкторе исключение, а в наследниках писал
Код:

if (false) {
super();
}



Часовой пояс GMT +4, время: 14:55.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.