Сергей-4030: Все сообщения за 24 Июля 2007 года

 
ПнВтСрЧтПтСбВс
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31

Сергей-4030

исключающий третье
★★
Balancer> И ради чего? Ради отказа от естественного представления объектов в окружающем мире.
Balancer> Яблоко - это растение, объект зелёного цвета, пища.

В природе как раз агрегация куда более часто появляется. Яблоко - не пижа, яблоко - цонтеинер, в котором некоторые елементы сьедобны.

Balancer> Главный (и единственный?) аргумент против множественного наследования - неоднозначности в случае появления одинаковых методов у разных родителей.

И не главный и не единственный. Главный - то, что на практике "двухмоторный самолет" становится наследником от двух моторов, пропеллера, двух крыльев и хвоста. И далее начинается кошмар. Причем у самых что ни есть квалифицированных разработчиков.

Balancer> Композиция вместо наследования тут не спасёт. Потому что, придётся делать обёртки для каждого метода из композиции, а таких методов - десятки. При чём все почти - из одной-двух строк, так что эти обёртки - тупо в полтора-два раза увеличат размер кода без какой-либо эффективной отдачи.

Почему это? Кто сказал, что "обертывать" нужно таким способом?

Balancer> "Инверсия логики" класса, т.е. рассматривать родителем не источник данных, а нужную конфигурацию, а источник данных композировать в виде стороннего механизма источника этих данных тоже некрасиво, так как удваивается количество классов. Всё равно придётся писать класс-источник данных, но вдобавок - ещё и класс-заглушку, наследник текущего представления для вывода.

Ничего подобного, с какой стати? ОК, есть обьект "страничка". Иногда статическая. Иногда динамическая, ис БД. ОК, наша страничка имеет ссылкы на DataProvider . Где ты увидел удвоение классов? Что такое "текужее представление"?
 

Сергей-4030

исключающий третье
★★
Balancer> - Есть тонны кода, который придётся тупо переписывать.

It is irrelevant to the topic. You asked why multiple inheritance is bad (more exact, why new languages get rid of that), not how to refactor your project.

Balancer> - Получаем заметное падение производительности, поскольку у нас появляется лишняя операция извлечения этого DataProvider.

Nothing even close to this. What are you talking about? Do you put your JDBC operators to one method? All those methods should be separated. This is business logic, it should be clearly separated from the interface. If we are talking about the problem you described, the best way to do this would be put all business logic apart, to EJB methods. If you think it would be not fast enough, think - financial institutes do it this way for millions of transactions and it's good enough for them.

Balancer> - Наконец, придётся переписать всю систему шаблонов, так как используемая не понимает метода от метода для класса. Ну вот такие у Smarty ограничения.

Irrelevant to the topic.

Balancer> Итого - имеем человекомесяц лишней работы... Да проще уж, действительно, всё на Python переписать, где это множественное наследование есть :D Объём работы сопоставим будет. И перспективы, опять же...

It depends on what you want. It cannot prove that multiple inheritance is a good approach to design.

PS Sorry for English, don't have Russian keyboard. No need to answer English, though, I can read Russian. ;)
 
Это сообщение редактировалось 25.07.2007 в 00:02

в начало страницы | новое
 
Поиск
Настройки
Твиттер сайта
Статистика
Рейтинг@Mail.ru