Что вы называете классами без методов?
Например,
class A
{
public string something;
public int a;
}
Выше класс без каких-либо методов. У этого типа класса есть специальное имя?
Что вы называете классами без методов?
Например,
class A
{
public string something;
public int a;
}
Выше класс без каких-либо методов. У этого типа класса есть специальное имя?
Ответы:
Большую часть времени: анти образец.
Почему? Потому что это облегчает процедурное программирование с помощью классов «Оператор» и структур данных. Вы разделяете данные и поведение, что не совсем хорошо ООП.
Часто: DTO (объект передачи данных)
Структуры данных только для чтения, предназначенные для обмена данными, полученными из объекта бизнеса / домена.
Иногда: просто структура данных.
Ну, иногда у вас просто должны быть такие структуры для хранения данных, которые являются простыми и понятными и не имеют операций с ними. Но тогда я бы не использовал открытые поля, а средства доступа (геттеры и сеттеры).
Я бы назвал это struct
или record
потому, что он используется для хранения данных, и это очень часто встречается в таких языках, C
как вы можете видеть здесь: struct (язык программирования C) . Поэтому лично я предпочел бы использовать struct
вместо класса более подходящий и читаемый:
struct A
{
public string something;
public int a;
}
Обычно они используются как DTO (объект передачи данных), как и другие.
Они известны как простые старые __- объекты (PO_O), где пробел - это Java, C или CIL, или любой другой язык, который вы используете.
Если они используются в качестве простых блоков данных для связи, то их можно назвать объектами передачи данных (DTO).
Если они представляют некоторые внешние данные, они могут быть известны как сущности .
Я бы назвал такой класс изменчивым держателем данных, и иногда использовал общую форму:
class DataHolder<T>
{
public T dat;
}
Обратите внимание, что перенос dat
в свойство снижает производительность и не дает никаких преимуществ, поскольку средство доступа к свойствам ничего не может сделать (кроме чтения / записи поля), что не нарушило бы некоторые реализации. Кроме того, может потребоваться использование Interlocked
методов с dat
(или, если это структура, с их полями), но это было бы невозможно, если бы они dat
были заключены в свойство.
Обратите внимание, что, хотя держатели изменяемых данных могут быть полезны для типов (изменяемых или нет), которым необходимо хранить данные, их нельзя безопасно использовать для обмена данными так же, как и неизменяемые типы. Например, утверждение типа:
myData = myCollection.GetData(myKey);
будет иметь ясное значение, если будет GetData
возвращен неизменный тип класса или структура («изменяемая» или нет), которая не содержит ссылок на изменяемые данные. Однако, если он вернул изменяемый объект класса, было бы неясно, будут ли какие-либо изменения в этом объекте последовательно игнорироваться базовой коллекцией, постоянно приводить к чистым обновлениям или вызывать какое-то утомительное или непредсказуемое поведение, не соответствующее ни одному описанию.
Если бы кто-то хотел, чтобы коллекция возвращала данные в изменяемом объекте, правильная парадигма часто была бы чем-то вроде:
var myData = new WhateverType();
myCollection.GetData(myKey, myData);
myData.ModifySomehow();
myCollection.StoreData(myKey, myData);
При использовании этого подхода есть явное следствие, GetData
которое приведет myData
к заполнению данными из коллекции, но myCollection
не следует ожидать , что она будет сохранять ссылку на нее после завершения функции и не будет использовать ее для каких-либо других целей. StoreData
будет также копировать информацию myData
в свою внутреннюю структуру данных без сохранения ссылки. Обратите внимание, что одним из преимуществ этого подхода является то, что если клиентский код будет читать много элементов данных в цикле, он может безопасно создать один экземпляр myData
вне цикла, а затем повторно использовать тот же экземпляр каждый раз до конца. Аналогично, myCollection
может быть возможность повторно использовать экземпляр объекта, связанный с ключом (копирование данных из переданного экземпляра), без необходимости создания нового экземпляра.