2008-10-30 13 views
203

Quelqu'un peut-il définir ce que signifie exactement 'POCO'? Je rencontre le terme de plus en plus souvent, et je me demande s'il ne s'agit que de classes ordinaires ou de quelque chose de plus?Définition 'POCO'

+18

Il est aussi amusant que "poco" soit un mot espagnol qui signifie "peu, pas beaucoup". Donc, cela correspond bien à ce contexte! http://en.wiktionary.org/wiki/poco –

+3

Cela signifie exactement la même chose en italien aussi :) – BlackBear

+2

Et en portugais signifie une erreur car il est orthographié: "pouco". – Ismael

Répondre

172

« Plain Old C# Object »

Juste une classe normale, pas d'attributs décrivant les préoccupations d'infrastructure ou d'autres responsabilités que vos objets de domaine ne devraient pas avoir. EDIT - comme d'autres réponses l'ont dit, il est techniquement "Plain Old CLR Object" mais comme David Arno, je préfère "Plain Old Class Object" pour éviter les liens avec des langages ou des technologies spécifiques. POUR CLARIFIER: En d'autres termes, ils ne dérivent pas de une classe de base spéciale et ne renvoient aucun type spécial pour leurs propriétés.

+14

Je voudrais voir un POCO comme une classe ancienne plaine qui ne cherche pas à faire partie de l'ensemble de modèles à la mode. Cependant j'aime votre réponse aussi. –

+0

D'accord - pas un fan du nom C#, mais c'est ce que j'ai entendu quand je me posais la question :) Classe puis correspond POJO, POVBO POC# O, POC++ O, PORO, etc –

+12

Ce doesn ' Je donne vraiment une bonne réponse dans mon opinion personnelle en tant que personne aussi curieuse. Ok, donc pas d'attributs décrivant l'infrastructure (que voulez-vous dire par attributs et infrastructure ... une connexion DB par exemple? Quoi? Exemple s'il vous plaît). Quelles responsabilités les objets de votre domaine ne devraient-ils pas avoir? Donc, POCO est un objet de domaine (objet BL) essentiellement? Donc vraiment POCO est juste un autre acronyme pour un objet/objet de domaine de couche métier qui signifient tous la même chose sacrément. POCO/objet de couche métier/objet de domaine == même chose sacrément, juste 3 acronymes différents pour le même concept droit? – PositiveGuy

5

En Java, le terme "PO" signifie typiquement "ancien". Le reste peut être difficile, donc je devine que votre exemple (dans le contexte de Java) est "plaine ancienne classe objet".

quelques autres exemples

  • POJO (Plain Old objet java)
  • POJI (interface ancienne java simple)
12

POCO signifie "Plain Old CLR Object".

+20

ooooook? alors qu'est-ce que cela signifie dans le contexte ou le monde réel? – PositiveGuy

+20

Et comme mon professeur d'électricité de lycée dirait, "... et les oranges goûtent orangey" –

+5

Bien, mais cet article ressemble plus à un commentaire, plutôt que d'une réponse car il ne répond pas complètement à la question. –

6

Pour ajouter les autres réponses, les termes POxx semblent tous provenir de POTS (Plain old telephone services). Le POX, utilisé pour définir du XML simple (simple), plutôt que du complexe multicouche associé à REST, SOAP, etc., était un terme utile et vaguement amusant. PO (insérer la langue de choix) O termes ont plutôt usé la blague mince.

42

La plupart des gens ont dit - Plain Old CLR objet (par opposition à la première POJO - Plain Old Java Object)

Le POJO un est sorti d'EJB, que vous nécessaire d'hériter d'une classe parent spécifique pour des choses comme des objets de valeur (ce que vous obtenez d'une requête dans un ORM ou similaire), donc si vous avez déjà voulu passer d'EJB (par exemple à Spring), vous étiez bourré. Les POJO ne sont que des classes qui ne forcent pas l'héritage ni aucun balisage d'attribut pour les faire fonctionner dans le cadre que vous utilisez.

Les POCO sont identiques, sauf dans .NET.

Généralement il sera utilisé autour des ORM - les plus anciens (et certains actuels) exigent que vous héritiez d'une classe de base spécifique, qui vous lie à ce produit. Les plus récents ne font pas (nhibernate étant la variante que je connais) - vous venez de faire une classe, l'enregistrer avec l'ORM, et vous êtes hors tension. Beaucoup plus facile.

+1

juste pour être complet, CLR stabds pour Common Language Runtime - la machine virtuelle .net. – philant

+0

+1 pour avoir mentionné sa relation (habituelle) aux ORM – Lucas

+3

Exemple .Net 3.5 sp1 ORM: l'infrastructure Entity nécessite que les classes héritent d'une certaine classe de structure. LINQ to SQL n'a pas cette exigence. Par conséquent LINQ to SQL fonctionne avec POCOs et le framework Entity ne fonctionne pas. – Lucas

3

Intéressant. La seule chose que je savais qui avait à voir avec la programmation et avait POCO dans le POCO C++ framework.

4

En termes WPF MVVM, une classe POCO est celui qui ne PropertyChanged pas déclencher des événements

6

Dans .NET a poco est un 'ancien objet CLR ordinaire. Ce n'est pas un «objet C# ancien et simple» ...

7

Je peux me tromper à ce sujet .. mais de toute façon, je pense que POCO est Plain Vieux Classe Objet CLR et il vient de POJO plaine vieux objet Java. Un POCO est une classe qui contient des données et n'a aucun comportement.

Voici un exemple écrit en C#:

class Fruit { 
    public Fruit() { 
    } 
    public Fruit(string name, double weight, int quantity) { 
     Name = name; 
     Weight = weight; 
     Quantity = quantity; 
    } 
    public string Name { get; set; } 
    public double Weight { get; set; } 
    public int Quantity { get; set; } 
    public override string ToString() { 
     return Name.ToUpper() + " (" + Weight + "oz): " + Quantity; 
    } 

} 
0

Alors que je suis sûr que POCO signifie Plain Old classe d'objets ou Plain Old C Objet à 99,9% des personnes ici, POCO est également Animator de Pro (Autodesk) construit dans le langage de script.

Questions connexes