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

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

10
Можем ли мы жить без конструкторов?
Допустим, по какой-то причине все объекты созданы таким образом: $ obj = CLASS :: getInstance (). Затем мы внедряем зависимости с помощью сеттеров и выполняем начальную инициализацию с помощью $ obj-> initInstance (); Есть ли реальные проблемы или ситуации, которые нельзя решить, если мы вообще не будем использовать конструкторы? Причиной …

5
Должен ли класс знать о своих подклассах?
Должен ли класс знать о своих подклассах? Должен ли класс делать что-то специфичное для данного подкласса, например? Мои инстинкты говорят мне, что это плохой дизайн, это похоже на какой-то анти-паттерн.

12
Объектно-ориентированный дизайн
Предположим, у вас есть следующее: +--------+ +------+ | Animal | | Food | +-+------+ +----+-+ ^ ^ | | | | +------+ +-------+ | Deer | | Grass | +------+ +-------+ Deerнаследует от Animalи Grassнаследует от Food. Все идет нормально. Animalобъекты могут есть Foodобъекты. Теперь давайте немного перемешаем. Давайте добавим, …

6
Должен ли объект знать свой собственный идентификатор?
obj.idкажется довольно распространенным, а также, кажется, попадает в диапазон того, что объект может знать о себе. Я спрашиваю себя, почему мой объект должен знать свой собственный идентификатор? Кажется, у него нет причин иметь это? Одна из основных причин его существования - это его извлечение, поэтому мои репозитории должны знать об …

4
Используйте абстрактный класс в C # как определение
Как разработчик C ++ я довольно привык к заголовочным файлам C ++ и считаю полезным иметь какую-то принудительную «документацию» внутри кода. У меня обычно бывает плохое время, когда мне приходится читать код C # из-за этого: у меня нет такой ментальной карты класса, с которой я работаю. Давайте предположим, что …

9
Когда вы должны использовать закрытый / внутренний класс?
Чтобы уточнить, о чем я спрашиваю, public class A{ private/*or public*/ B b; } против public class A{ private/*or public*/ class B{ .... } } Я могу определенно подумать о некоторых причинах, чтобы использовать одну или другую, но то, что я действительно хотел бы видеть, - это убедительные примеры, которые …

11
Когда вы хотите две ссылки на один и тот же объект?
В частности, в Java, но, вероятно, и в других языках: когда было бы полезно иметь две ссылки на один и тот же объект? Пример: Dog a = new Dog(); Dob b = a; Есть ли ситуация, когда это было бы полезно? Почему это предпочтительное решение для использования aвсякий раз, когда …

3
Лучший дизайн для форм Windows, которые будут иметь общую функциональность
В прошлом я использовал наследование, чтобы разрешить расширение форм Windows в моем приложении. Если бы все мои формы имели общие элементы управления, графические объекты и функции, я бы создал базовую форму, реализующую общие элементы управления и функции, а затем позволил бы другим элементам управления наследоваться от этой базовой формы. Однако …

3
Никогда не делайте публичных участников виртуальными / абстрактными - правда?
Еще в 2000-х мой коллега сказал мне, что делать публичные методы виртуальными или абстрактными - это нехорошо. Например, он считал такой класс не очень хорошо спроектированным: public abstract class PublicAbstractOrVirtual { public abstract void Method1(string argument); public virtual void Method2(string argument) { if (argument == null) throw new ArgumentNullException(nameof(argument)); // …

9
Являются ли методы init () запахом кода?
Есть ли цель объявить init()метод для типа? Я не спрашиваю, стоит ли нам отдавать предпочтение init()конструктору или как избежать объявленияinit() . Я спрашиваю, есть ли какое- либо обоснование для объявления init()метода (видя, насколько он распространен) или это запах кода, и его следует избегать. Эта init()идиома довольно распространена, но я пока …

4
Как слишком много переменных экземпляра приводит к дублированию кода?
Согласно рефакторингу по шаблонам : Когда класс пытается сделать слишком много, он часто отображается как слишком много переменных экземпляра. Когда у класса слишком много переменных экземпляра, дублированный код не может быть далеко позади. Как слишком много переменных экземпляра приводит к дублированию кода?

4
Как создать лучший ОО-код в приложении на основе реляционной базы данных, где база данных плохо спроектирована
Я пишу веб-приложение на Java, которое состоит в основном из множества похожих страниц, на каждой из которых есть несколько таблиц, и фильтр, который применяется к этим таблицам. Данные этих таблиц поступают из базы данных SQL. Я использую myBatis в качестве ORM, что может быть не лучшим выбором в моем случае, …

7
ОО лучшие практики для программ на С [закрыто]
Закрыто . Этот вопрос должен быть более сфокусированным . В настоящее время не принимает ответы. Хотите улучшить этот вопрос? Обновите вопрос, чтобы он был сосредоточен только на одной проблеме, отредактировав этот пост . Закрыто 4 года назад . «Если вы действительно хотите ОО-сахар - используйте C ++», - был немедленный …

1
Почему (/ сделал) Бертран Мейер считает, что создание подклассов - единственный способ расширить «закрытый» модуль?
В Построении объектно-ориентированного программного обеспечения Мейера (1988) он определяет принцип открытия / закрытия следующим образом: Модуль будет считаться открытым, если он все еще доступен для расширения. Например, должна быть возможность добавить поля к структурам данных, которые он содержит, или новые элементы к набору функций, которые он выполняет. Модуль считается закрытым, …

7
Должен ли я создавать интерфейсы для объектов передачи данных?
Это хорошая идея или плохая идея создать интерфейс для объектов передачи данных? Предполагая, что объект обычно изменчив. Хотя мой пример на Java, он должен быть применим к любому другому языку с похожими понятиями. interface DataTransferObject { String getName(); void setName(String name); } class RealDataTransferObject implements DataTransferObject { String name; String …

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