|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
Регистрация: Dec 2014
Адрес: Санкт-Петербург
Сообщений: 479
|
Делегирование расчётов "статическому" классу
Друзья! Вопрос такой. Допустим, нам нужно обратиться к экземпляру класса персонажа Character за неким значением, которое, в свою очередь, рассчитывается из значений свойств того же экземпляра по сложному алгоритму с использованием каких-нибудь дополнительных констант. Оно может быть посчитано непосредственно в теле класса Character. Но чтобы не плодить много "мяса" в без того немаленьком классе, я стал делать запись такого вида:
И уже в классе ComplicatedValues размещаю используемые константы, делаю статическую функцию calculate(ch:Character) и произвожу расчёты. Что скажете по поводу такого подхода?
__________________
Не сломано - не чини! |
|
|||||
Lorem ipsum
|
А не проще в данном случае создать BasCharacter, в котором прописать метод-калькулятор и больше не плодить его во всех наследниках?
__________________
Поймай яблоко 2! |
|
|||||
Регистрация: Dec 2014
Адрес: Санкт-Петербург
Сообщений: 479
|
А если у наследников различаются алгоритмы расчёта?
__________________
Не сломано - не чини! |
|
|||||
А чем override не подходит?
__________________
Я заклинаю вас действовать иначе. |
|
|||||
ну, если персонажей может быть много с подобными свойствами да методами, то по-любому через наследование, для этого оно и есть.
__________________
while(live()) { hope(); } |
|
|||||
Регистрация: Oct 2006
Сообщений: 2,281
|
а разве статичные методы наследуются/переопределяются?
|
|
|||||
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Никто и не говорит про статичные.
Топикстартер говорил, да. Но он ведь спрашивал, а не отвечал.
__________________
Reality.getBounds(this); |
|
|||||
Регистрация: Dec 2014
Адрес: Санкт-Петербург
Сообщений: 479
|
Цитата:
Я потому и спрашиваю, что преимущества такого подхода очевидны и я их написал. А вот в чём недостатки/риски, я не знаю.
__________________
Не сломано - не чини! |
|
|||||
а что в calculate? switch case по карактерсам? С виду это выглядит так, что вы просто взяли некоторый метод из карактерса и выделили в отдельный класс, сделав его статическим. Если так, то идеологически правильней и понятней (с моей субъективной точки зрения) было бы выделить его в некий абстрактный карактер
__________________
while(live()) { hope(); } |
|
|||||
Как-то не айс, когда значения для объекта расситываются в классе, который к нему никакого отношения не имеет. Это создает дополнительную связанность, которая тут ни к чему. Присоединяюсь к ораторам выше) Плюсую за наследование
__________________
Ко мне можно и нужно обращаться на ты) |
Часовой пояс GMT +4, время: 07:02. |
|
« Предыдущая тема | Следующая тема » |
|
|