![]() |
|
Модераторы: Се ля ви |
![]()
|
|
| setq |
|
|||
|
Unregistered |
Если существует и то и другое, то оно кому-то нужно и кто-то находит оба подхода удобными. И всё-таки может быть есть задачи для которых например prototype-based OOP подходит лучше чем class-based и наоборот. Вот хотелось бы узнать вставал ли кто-нибудь перед выбором между этими подходами и к каким выводам пришёл. Спасибо.
|
|||
|
||||
| NumLock |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 66 Регистрация: 30.7.2006 Где: Иркутск Репутация: нет Всего: нет |
Могу выразить свое мнение: подход ставит перед разработчиком, как факт, язык программирования. А язык программирования выбирается в зависимости от задачи. Так что проблема выбора подхода, IMHO, встать не может.
|
|||
|
||||
| vtk13 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 1 Регистрация: 20.5.2007 Репутация: нет Всего: нет |
Я думаю вот это http://htmlcoder.visions.ru/JavaScript/?3 - хороший пример чем prototype-based отличается от class-based.
Суть примера в том, что можно изменить поведение уже существующего класса подключением стороннего модуля, как такое провернуть в class-based языке, я не представляю. Буду рад, если поделитесь мыслями по поводу java или php аналогий javascript-овскго "SomeClass.prototype.myMethod=function(){...}". |
|||
|
||||
| Се ля ви |
|
|||
![]() Java/SOAрхитектор ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 2016 Регистрация: 5.6.2004 Где: place without tim e and space Репутация: 6 Всего: 127 |
setq, вопрос интересный.
Лично мне кажется, что prototype-based наследование уместно в проектах мелкого уровня, когда есть человек, который держит программу в голове и у него, возможно, есть один-два помощника. Т.е. эти проекты трудно-масштабируемы. И это встаёт проблемой когда мы пытаемся создать большое приложение со сложной логикой. Главная проблема мне видится в инкапсуляции, которую не учитывает prototype-based наследование. Её можно добиться на простейшем уровне (напр. в JavaScript - c использованием closure), но протащить её через prototype-based наследование весьма затруднительно. Я поставил такую задачу и это сделал для JavaScript (в этой теме), но получившийся в итоге паттерн оказался довольно громоздким, на гране пригодности из-за своей сложности. Так что реалии таковы, что если специально об этом не побеспокоиться (а побеспокоиться придётся весьма немало), то в такой модели будет сложно абстрагировать одни слои бизнес-логики от других, что будет создавать ограничения масштабируемости проекта. -------------------- |
|||
|
||||
| Lazin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: 1 Всего: 154 |
Вот наследование как раз очень вредит инкапсуляции =)
А с масштабируемостью у такого подхода как раз лучше, расширяемость проще, меньше связей между разными частями системы и тд... Хуже то, что объекты существуют только во время выполнения программы, это усложняет ее тестирование так как корректность программы написанную на java или С++ можно проверить до запуска, так как есть информация о типах, а программу на lua или Io для этого нужно запустить... |
|||
|
||||
![]()
|
| Правила раздела "Философия программирования": | |
|
|
Форум "Философия программирования" предназначен для обсуждения вопросов, так или иначе связанных с философскими аспектами разработки ПО: • вопросы перспективного развития методов написания ПО; • изменяющиеся языки и методологии программирования; Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Се ля ви. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Философия программирования | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |