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

13
В DDD доменная служба по сути является просто шаблоном фасада и / или посредника?

В домене, управляемом дизайном, уровень домена может иметь несколько (традиционных) сервисов. Например, для пользовательского домена мы можем иметь: UserFactory, который строит объекты User различными способами. UserRepository, который отвечает за взаимодействие со службами постоянства на уровне...

13
Стек, расширяющий LinkedList. Нарушение принципа подстановки Лискова?

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

13
Инварианты времени жизни объекта и семантика перемещения

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

13
Почему статические методы не должны быть переопределенными?

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

13
Следуют ли SOLID чтению и записи файлов две разные обязанности?

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

12
Практические пределы размера Hashtable и словаря в c #

Каковы практические ограничения на количество элементов, которые может содержать C # 4 Dictionary или Hashtable, и общее количество байтов, которые могут содержать эти структуры. Я буду работать с большим количеством объектов и хочу знать, когда эти структуры начнут испытывать проблемы. Для...

12
Как на самом деле узнать, что нужно сделать в объектно-ориентированном дизайне?

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

12
Переключение против полиморфизма при работе с моделью и представлением

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

12
Принцип Открытого Закрытия (OCP) против Принципа Инверсии Зависимостей (DIP)

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

12
Как избежать дублирования структур данных, когда части приложения написаны на разных языках?

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

12
Как избежать нарушения SRP в классе для управления кэшированием?

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

12
Подводные камни доменного дизайна с Entity Framework

Многие учебники по DDD, которые я изучал, в основном охватывают теорию. Все они имеют примеры элементарного кода (Pluralsight и аналогичные). В Интернете также предпринимаются попытки нескольких людей создать учебники по DDD с EF. Если вы начнете их изучать ненадолго - вы быстро заметите, что они...

11
Какой смысл в свойствах?

Вот некоторые аргументы для свойств и мои контраргументы: Проще использовать, чем писать методы получения и установки Пары методов получения и установки являются запахом кода. Упростить их написание - это все равно, что облегчить прохождение математического теста, используя форму Scantron и...

11
SOLID против статических методов

Вот проблема, с которой я часто сталкиваюсь: пусть будет проект интернет-магазина с классом Product. Я хочу добавить функцию, которая позволяет пользователям публиковать отзывы о продукте. Итак, у меня есть класс Review, который ссылается на продукт. Теперь мне нужен метод, который перечисляет все...

11
Дизайн на «смешанных» языках: объектно-ориентированный дизайн или функциональное программирование?

В последние несколько лет языки, которые я люблю использовать, становятся все более и более «функциональными». Сейчас я использую языки, которые являются своего рода «гибридом»: C #, F #, Scala. Мне нравится разрабатывать свое приложение, используя классы, которые соответствуют объектам домена, и...

11
Я страдаю от чрезмерного использования инкапсуляции?

Я заметил кое-что в своем коде в различных проектах, которое кажется мне запахом кода и чем-то плохим, но я не могу с этим справиться. Пытаясь написать «чистый код», я склонен чрезмерно использовать частные методы, чтобы облегчить чтение моего кода. Проблема в том, что код действительно чище, но...

11
Лучше предварительно инициализировать атрибуты в классе или добавлять их по пути?

Извините, если это АБСОЛЮТНО софомальный вопрос, но мне любопытно, какие есть лучшие практики, и я не могу найти хорошего ответа в Google. В Python я обычно использую пустой класс в качестве контейнера структуры данных super-catchall (вроде как файл JSON) и добавляю атрибуты по пути: class DataObj:...

11
Лучший шаблон проектирования ООП для последовательности операций

Я работаю над приложением, модуль которого последовательно выполняет следующие финансовые операции: Когда пользователь запрашивает перевод определенной суммы на свой банковский счет: проверить, может ли какая-либо транзакция произойти сейчас? (транзакция может быть осуществлена ​​только в течение...

11
Должен ли я предпочесть композицию или наследование в этом сценарии?

Рассмотрим интерфейс: interface IWaveGenerator { SoundWave GenerateWave(double frequency, double lengthInSeconds); } Этот интерфейс реализован рядом классов, которые генерируют волны различной формы (например, SineWaveGeneratorи SquareWaveGenerator). Я хочу реализовать класс, который генерирует...

11
Объектно-ориентированное позднее связывание

В определении объекта Alan Kays есть определение, которое я частично не понимаю: Для меня ООП означает только обмен сообщениями, локальное хранение и защиту, а также скрытие процесса состояния и крайнюю LateBinding всех вещей. Но что означает «LateBinding»? Как я могу применить это на языке, как C...