Помимо наследования, в веб-разработке в реальном времени другие функции OO играют какую-либо важную роль?
В веб-разработке мы используем java .net или php5. Все они ОО. и иметь все функции OO.
Но на веб-сайтах в реальном времени эти функции OO играют какую-либо важную роль, кроме наследования.?
Может ли кто-нибудь перечислить некоторые из них с примерами в реальном времени.
При разработке приложений может широко использоваться OO. Но в случае веб-сайтов, играет ли OO важную роль? Как?
4 answers
Еще в 1995 году в книге Шаблоны проектирования удалось создать это феноменальное понимание на странице 20:
Предпочтение композиции объектов перед наследованием классов
С тех пор правильная объектная ориентация была связана с этим, а не с наследованием. В частности, принципы SOLID описывают набор принципов объектной ориентации, применимых к любой базе кода, где важна ремонтопригодность. Полиморфизм важен, но наследование не имеет значения.
Это относится как к веб-приложениям, так и к любому другому типу приложений.
Я активно использую инкапсуляцию и полиморфизм. В частности, я довольно активно использую шаблон стратегии (среди прочего), чтобы разделить большую часть своих функций. В сочетании с внедрением зависимостей мне действительно легко отделить функциональность, скажем, моего уровня сохраняемости, от моей бизнес-логики или уровня представления.
Например, тривиально заменить реализацию гибернации реализацией JDBC и т. Д. На самом деле, недавно, Я только что переключился со службы электронной почты, которая работает синхронно с веб-запросом, на службу, которая использует очередь сообщений для асинхронной отправки почты. Все, что мне нужно было сделать, как только я внедрил новый слой, - это изменить, какой класс был введен в мои бобы, которые его используют.
Редактировать: Чтобы ответить на ваш комментарий, @zod, я не использую его так в отношении выполняемых страниц, хотя это случается время от времени (например, у меня есть разные классы для электронной почты HTML и обычная текстовая электронная почта в зависимости от того, что запросил пользователь), но я в первую очередь использую принципы OO в конфигурации приложения. Имеет ли это смысл?
Для начала пригодятся основные принципы OO.Возьмем, к примеру, инкапсуляцию данных в шаблоне MVC; Тот факт, что у вас может быть модель пользователя, которая выполняет все функции пользователя, означает, что все, что связано с пользователями, инкапсулировано в этой одной модели. Это облегчает добавление и изменение функций в дальнейшем. Расширяемость также пригодится, если вы хотите расширить свою программу с помощью кода, написанного другими людьми. До тех пор, пока вы знаете публичный интерфейс их классы, вы можете их использовать.
Чтобы привести простой пример, мы, как компания, активно используем его для обеспечения безопасности. У нас есть плагины для различных фреймворков, которые контролируют, кто пытается добраться до какого класса и метода. В дополнение к этому мы можем избежать доступа пользователя к этому классу и методу без добавления дополнительных строк в класс.
Кроме этого, мы также используем их для уточнения кода.
Помимо всех тех, кто занимается ООП, это хороший способ создать большой проект с большой командой.