Определение 'POCO' - PullRequest
       32

Определение 'POCO'

223 голосов
/ 30 октября 2008

Может кто-нибудь определить, что именно означает «POCO»? Я все чаще и чаще сталкиваюсь с этим термином, и мне интересно, если речь идет только о простых классах или о чем-то большем?

Ответы [ 10 ]

183 голосов
/ 30 октября 2008

"Простой старый объект C #"

Просто обычный класс, без атрибутов, описывающих проблемы инфраструктуры или другие обязанности, которые не должны иметь ваши доменные объекты.

РЕДАКТИРОВАТЬ - как уже говорилось в других ответах, технически это «Простой старый объект CLR», но я, как и комментарии Дэвида Арно, предпочитаю «Простой старый объект класса», чтобы избежать связей с конкретными языками или технологиями.

ДЛЯ УТОЧНЕНИЯ: Другими словами, они не происходят от некоторый специальный базовый класс, и при этом они не возвращают никаких специальных типов для своих свойств.

43 голосов
/ 30 октября 2008

Большинство людей сказали это - Простой старый объект CLR (в отличие от более раннего POJO - Простой старый объект Java)

POJO один вышел из EJB, который требовал от вас наследовать от определенного родительского класса для таких вещей, как объекты-значения (что вы получаете от запроса в ORM или аналогичном), так что если вы когда-либо хотели перейти из EJB (например, к весне), вы были чучела.

POJO - это просто классы, которые не вызывают наследование или разметку каких-либо атрибутов, чтобы заставить их «работать» в любой среде, которую вы используете.

POCO такие же, кроме .NET.

Как правило, он будет использоваться с ORM - более старые (и некоторые текущие) требуют, чтобы вы наследовали от определенного базового класса, который связывает вас с этим продуктом. Более новых нет (nhibernate - вариант, который я знаю) - вы просто создаете класс, регистрируете его в ORM, и вы отключаетесь. Гораздо проще.

20 голосов
/ 07 июля 2016

Я могу ошибаться в этом ... но в любом случае, я думаю, что POCO - это Простой Старый Класс CLR Object, и он происходит из простого старого POJO Java Object. POCO - это класс, который содержит данные и не имеет поведения.

Вот пример, написанный на 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}";
    }
}
9 голосов
/ 30 октября 2008

POCO означает «Простой старый объект CLR».

7 голосов
/ 30 октября 2008

Чтобы добавить остальные ответы, все термины POxx, по-видимому, происходят от POTS ( Обычные старые телефонные услуги ).

POX, используемый для определения простого (простого старого) XML, а не сложного многослойного материала, связанного с REST, SOAP и т. Д., Был полезным и смутно забавным термином. PO (вставьте язык по выбору) O термины довольно измучили шутку.

6 голосов
/ 13 февраля 2015

В .NET POCO - это «Простой старый объект CLR». Это не «Простой старый объект C #» ...

5 голосов
/ 30 октября 2008

На земле Java, как правило, «PO» означает «обычный старый». Остальные могут быть хитрыми, поэтому я предполагаю, что ваш пример (в контексте Java) - «простой старый объект класса».

некоторые другие примеры

  • POJO (простой старый объект Java)
  • POJI (простой старый интерфейс Java)
3 голосов
/ 16 ноября 2008

Интересно. Единственное, что я знал о программировании и включал в себя POCO - это POCO C ++ framework .

2 голосов
/ 01 января 2014

В терминах WPF MVVM класс POCO - это класс, который не генерирует события PropertyChanged

1 голос
/ 18 июля 2016

Хотя я уверен, что POCO означает «Простой старый класс» или «Простой старый объект C» для 99,9% людей, POCO также является встроенным языком сценариев Animator Pro (Autodesk).

...