Comment appelez-vous les classes sans méthodes?
Par exemple,
class A
{
public string something;
public int a;
}
Ci-dessus est une classe sans aucune méthode. Ce type de classe a-t-il un nom spécial?
programming-languages
naming
data-structures
class
user52343
la source
la source
Réponses:
La plupart du temps: un motif anti.
Pourquoi? Parce qu'il facilite la programmation procédurale avec les classes "Opérateur" et les structures de données. Vous séparez les données et les comportements qui ne sont pas exactement bons.
Souvent fois: un DTO (Data Transfer Object)
Des infrastructures de données en lecture seule destinées à échanger des données, dérivées d'un objet métier / domaine.
Parfois: juste la structure des données.
Eh bien parfois, vous devez simplement avoir ces structures pour stocker des données qui sont tout simplement et simples et sans aucune opération. Mais je n'utiliserais pas de champs publics mais des accesseurs (getters et setters).
la source
Je l'appellerais
struct
ourecord
parce qu'il est utilisé pour le stockage de données et cela est très commun aux langages commeC
vous pouvez le voir ici: struct (langage de programmation C) . Donc, personnellement, je préférerais utiliser unestruct
classe plutôt qu'une classe plus adaptée et lisible:Habituellement, ils sont utilisés comme DTO (Data Transfer Object) comme l'ont dit les autres.
la source
Ceux-ci sont connus sous le nom de Plain Old __ Objects (PO_O) où le blanc est Java ou C ou CIL, ou quel que soit le langage que vous utilisez.
S'ils sont utilisés comme de simples blocs de données pour la communication, ils peuvent être appelés objets de transfert de données (DTO).
S'ils représentent des données fournies en externe, ils peuvent être appelés Entités .
la source
J'appellerais une telle classe un détenteur de données mutable, et j'ai parfois utilisé un formulaire générique:
Notez que l'habillage
dat
dans une propriété dégradera les performances et n'offrira aucun avantage, car il n'y a rien qu'un accesseur de propriété puisse faire (autre que lire / écrire le champ) qui ne casserait pas certaines implémentations. De plus, il peut être nécessaire d'utiliser desInterlocked
méthodes avecdat
(ou, s'il s'agit d'une structure, avec leurs champs), mais cela ne serait pas possible si ellesdat
étaient encapsulées dans une propriété.Notez que si les détenteurs de données mutables peuvent être utiles pour les types (mutables ou non) qui doivent contenir des données, ils ne peuvent pas être utilisés en toute sécurité pour l'échange de données de la même manière que les types immuables. Par exemple, une déclaration comme:
aurait un sens clair s'il
GetData
renvoyait un type de classe immuable ou une structure ("mutable" ou non) qui ne contenait pas de références à des données mutables. S'il renvoyait un objet de classe mutable, cependant, il ne serait pas clair si des modifications de cet objet seraient systématiquement ignorées par la collection sous-jacente, entraîneraient régulièrement des mises à jour propres de celui-ci, ou provoqueraient un comportement gênant ou imprévisible ne répondant à aucune description.Si l'on souhaitait qu'une collection renvoie des données dans un objet mutable, le paradigme correct serait souvent quelque chose comme:
En utilisant cette approche, il existe une implication claire qui
GetData
entraîneramyData
le remplissage des données de la collection, maismyCollection
ne devrait pas en conserver une référence une fois la fonction terminée, ni l'utiliser à d'autres fins.StoreData
copierait également les informationsmyData
dans sa propre structure de données interne sans conserver de référence. Notez que l'un des avantages de cette approche est que si le code client lit de nombreux éléments de données dans une boucle, il peut créer en toute sécurité une instance de l'myData
extérieur de la boucle, puis réutiliser cette même instance à chaque fois. De même,myCollection
peut être en mesure de réutiliser l'instance d'objet associée à la clé (copie des données de l'instance transmise) sans avoir à créer une nouvelle instance.la source
Selon le contexte, je les appelle des entités. Sur mes applications commerciales ennuyeuses, elles sont généralement mappées 1: 1 à mon DER.
la source
Je l'appellerais un
Schema
.Cela couvre plusieurs utilisations telles que la représentation d'une table de base de données, ou d'un enregistrement désérialisé, ou d'un DTO, etc.
la source