Вопросы с тегом «object-oriented-design»

Объектно-ориентированное проектирование - это процесс планирования системы взаимодействующих объектов с целью решения программной задачи.

3
Как придерживаться принципа открытого-закрытого на практике
Я понимаю цель принципа открытого-закрытого. Он предназначен для того, чтобы уменьшить риск поломки чего-либо, что уже работает при его изменении, предлагая вам попытаться расширить без изменения. Однако у меня возникли проблемы с пониманием того, как этот принцип применяется на практике. Насколько я понимаю, есть два способа его применения. До и …

8
OO Design связанные вопросы в технических интервью [закрыто]
Закрыто . Этот вопрос основан на мнении . В настоящее время он не принимает ответы. Хотите улучшить этот вопрос? Обновите вопрос, чтобы ответить на него фактами и цитатами, отредактировав этот пост . Закрыто 4 года назад . Я недавно посещал довольно много интервью, и компании попросили меня ответить на вопросы …

2
Дизайн: метод Object против метода отдельного класса, который принимает Object в качестве параметра?
Например, лучше ли сделать: Pdf pdf = new Pdf(); pdf.Print(); или: Pdf pdf = new Pdf(); PdfPrinter printer = new PdfPrinter(); printer.Print(pdf); Другой пример: Country m = new Country("Mexico"); double ratio = m.GetDebtToGDPRatio(); или: Country m = new Country("Mexico"); Country us = new Country("US"); DebtStatistics ds = new DebtStatistics(); double …

2
Стек, расширяющий LinkedList. Нарушение принципа подстановки Лискова?
Существует класс LinkedList с такими функциями, как add_first (), add_last (), add_after (), remove_first (), remove_last () и remove () Теперь есть класс Stack, который предоставляет такие функции, как push (), pop (), peek () или top (), и для реализации этих методов он расширяет методы класса LinkedList. Это нарушение …

4
Следуют ли SOLID чтению и записи файлов две разные обязанности?
Я только начинаю изучать SOLID, и я не уверен, что чтение из файлов и запись в файлы являются одной и той же ответственностью. Цель имеет тот же тип файла; Я хочу читать и писать .pdf в моем приложении. Приложение на Python, если это имеет какое-либо значение.

5
Почему статические методы не должны быть переопределенными?
В ответах на этот вопрос общее согласие заключалось в том, что статические методы не предназначены для переопределения (и, следовательно, статические функции в C # не могут быть виртуальными или абстрактными). Это не только случай в C #, хотя; Java также запрещает это, и C ++, похоже, тоже не нравится. Однако …

1
Инварианты времени жизни объекта и семантика перемещения
Когда я давно изучал C ++, мне было настоятельно подчеркнуто, что отчасти C ++ состоит в том, что, как и у циклов, есть «инварианты цикла», у классов также есть инварианты, связанные с временем жизни объекта - вещи, которые должны быть истинными. пока объект жив. Вещи, которые должны быть установлены конструкторами …

4
Хорошие стратегии реализации для инкапсуляции общих данных в программный конвейер
Я работаю над перефакторингом определенных аспектов существующего веб-сервиса. Реализация сервисных API-интерфейсов осуществляется с помощью своего рода «конвейера обработки», в котором есть задачи, которые выполняются последовательно. Неудивительно, что более поздним задачам может потребоваться информация, вычисленная предыдущими задачами, и в настоящее время способ сделать это - добавить поля в класс «состояние конвейера». …

7
Дизайн: Обратный звонок в родительский класс
При моделировании объекта с дочерними элементами обычно включают дочерние элементы посредством композиции в качестве члена родительского класса. Однако иногда детям нужно что-то сказать родителю, им нужно вызвать функцию родителя. Как это можно сделать с помощью C ++? Некоторые варианты: Сделайте родительский класс глобальным, поэтому дочерние объекты смогут вызывать функции-члены родительского …

2
В DDD доменная служба по сути является просто шаблоном фасада и / или посредника?
В домене, управляемом дизайном, уровень домена может иметь несколько (традиционных) сервисов. Например, для пользовательского домена мы можем иметь: UserFactory, который строит объекты User различными способами. UserRepository, который отвечает за взаимодействие со службами постоянства на уровне инфраструктуры Является ли UserService на уровне домена просто посредником и / или фасадом для этих …

2
Как избежать дублирования структур данных, когда части приложения написаны на разных языках?
В качестве примера, скажем, вы пишете приложение на Java . Ваше приложение взаимодействует с сервером API, написанным на Python . Сервер Python связывается с базой данных SQL . У вас также есть веб-сайт для вашего приложения, написанный на JavaScript . С 4 разными языками легко в конечном итоге повторить по …

2
Как на самом деле узнать, что нужно сделать в объектно-ориентированном дизайне?
Во-первых, отказ от ответственности: я не знаю, подходит ли этот вопрос к этому сайту, но я все еще считаю его актуальным не только для меня, но и для других начинающих людей. Если вопрос может быть улучшен, чтобы соответствовать здесь, пожалуйста, укажите в комментариях. Если это не подходит, дайте мне знать …

5
Как избежать нарушения SRP в классе для управления кэшированием?
Примечание. Пример кода написан на c #, но это не должно иметь значения. Я поставил c # в качестве тега, потому что не могу найти более подходящий. Это о структуре кода. Я читаю Чистый код и пытаюсь стать лучшим программистом. Я часто сталкиваюсь с трудностями следования принципу единой ответственности (классы …

1
Принцип Открытого Закрытия (OCP) против Принципа Инверсии Зависимостей (DIP)
Я пытался понять разницу между Open Closed Principle (OCP) и Dependency Inversion Princible (DIP). Основываясь на исследованиях, которые я провел в Интернете, я пришел к выводу, что «DIP - это один из вариантов, с помощью которого мы можем достичь OCP». Я прав на это? Можете ли вы привести пример, который …

4
Переключение против полиморфизма при работе с моделью и представлением
Я не могу найти лучшее решение моей проблемы. У меня есть контроллер представления, который представляет список элементов. Эти элементы являются моделями, которые могут быть экземплярами B, C, D и т. Д. И наследоваться от A. Таким образом, в этом контроллере представления каждый элемент должен переходить на другой экран приложения и …

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.