2009-05-28 2 views
0

Кажется, что, хотя я стремлюсь поддерживать принципы OO, все это кажется таким надуманным или неестественным.Может ли веб-приложение быть объектно-ориентированным?

+0

Эластируйте пожалуйста. – DevinB

+2

Или, еще лучше, задайте реальный вопрос. – cgp

+1

Я понимаю, что мой комментарий был действительно довольно расплывчатым (о иронии). Не могли бы вы рассказать, в каком смысле ваш код OO кажется надуманным или неестественным. Какие шаблоны проектирования вы пытаетесь использовать, и как они вас терпят неудачу? – DevinB

ответ

4

Если вы думаете о объектах как о конструкциях для хранения информации о состоянии, определение «объектно-ориентированное» становится напряженным безгражданностью веб-запросов. Тем не менее, объекты без гражданства все еще являются объектами, и веб-приложения могут следовать принципам проектирования OO в этом контексте.

+0

да, это то, что я имел в виду. – zsharp

5

Мой совет - не слишком догматично относиться к принципам ОО. Они работают хорошо, но иногда, когда люди говорят, что они стремятся поддерживать принципы OO, это может означать, что они создают класс для всего, даже если это не подходит. Вещи также становятся менее неестественными, поскольку вы привыкаете к ним, например, «x = 3» является естественным для задания, хотя кто-то с математическим фоном подумает, что это неестественно.

Вы также можете попробовать взглянуть на существующие веб-приложения OO и шаблоны проектирования. Обычным шаблоном проектирования OO является шаблон MVC, который поддерживается (почти принудительно) Ruby on Rails и Django. Сделайте поиск MVC.

+0

оригинальный OO-MVC имеет смысл только для графических интерфейсов, более распространенный web-MVC является более многослойным, чем OO. – Javier

+0

Хавьер, не могли бы вы рассказать об этом в отношении расслоения? – zsharp

+1

GUI-MVC (популярный на SmallTalk) был модульным и OOP; каждый модуль имел три объекта, более или менее плотно соединенные, образуя единый модуль, созданный при необходимости. web-MVC, OTOH, представляет собой три слоя, а не объекты, каждый из которых абстрагирует какой-то аспект, чтобы обеспечить доступ к какой-либо части более высокого уровня (хранение, представление и поток управления). они не составлены в более крупной подсистеме, и они не представляют собой визуальный элемент, вместе они управляют всем приложением (или subapp). совершенно разные вещи, возможно, связанные только на философском уровне, а не на уровне дизайна. – Javier

Смежные вопросы