Definicja "POCO"
Czy ktoś może zdefiniować co dokładnie znaczy "POCO"? Coraz częściej spotykam się z tym terminem i zastanawiam się, czy chodzi tylko o zwykłe klasy, czy znaczy coś więcej?
11 answers
"Zwykły Stary Obiekt C#"
Zwykła Klasa, bez atrybutów opisujących problemy z infrastrukturą lub inne obowiązki, których obiekty domeny nie powinny mieć.
EDIT-jak stwierdziły inne odpowiedzi, jest to technicznie "zwykły stary obiekt CLR", ale ja, podobnie jak Komentarze Davida Arno, wolę "zwykły stary obiekt klasy", aby uniknąć powiązań z konkretnymi językami lub technologiami.
Dla wyjaśnienia: innymi słowy, nie wywodzą się z jakiejś specjalnej klasie bazowej, ani nie zwracają żadnej specjalne typy dla ich właściwości.
Poniżej znajduje się przykład każdego z nich.Przykład POCO:
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
}
Przykład czegoś, co nie jest POCO:
public class PersonComponent : System.ComponentModel.Component
{
[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
public string Name { get; set; }
public int Age { get; set; }
}
Powyższy przykład dziedziczy ze specjalnej klasy, aby nadać jej dodatkowe zachowanie, jak również używa niestandardowego atrybutu do zmiany zachowania... te same właściwości istnieją na obu klasach, ale jedna z nich to Nie tylko zwykły stary obiekt.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-07-22 21:06:58
Większość ludzi to mówi - zwykły stary obiekt CLR (w przeciwieństwie do wcześniejszego POJO - zwykły stary obiekt Java)
POJO wyszło z EJB, co wymagało dziedziczenia od określonej klasy nadrzędnej dla rzeczy takich jak obiekty wartości (co otrzymujesz z zapytania w ORM lub podobnym), więc jeśli kiedykolwiek chciałeś przejść z EJB (np. do Spring), zostałeś wypchany.
POJO są tylko klasami, które nie wymuszają dziedziczenia lub znaczników atrybutów, aby "działały" w jakimkolwiek framework, którego używasz.
POCO są takie same, z wyjątkiem .NET.
Ogólnie będzie używany wokół ORM-starsze (i niektóre obecne) wymagają dziedziczenia z określonej klasy bazowej, która wiąże cię z tym produktem. Nowsze nie (NHibernate to wariant, który znam) - po prostu robisz klasę, rejestrujesz ją w ORM i jesteś wyłączony. Dużo łatwiej.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-10-30 13:15:33
Mogę się mylić.. ale tak czy inaczej, myślę, że POCO to zwykły stary obiekt Class CLR i pochodzi od POJO plain old Java Object. POCO to klasa, która przechowuje Dane i nie ma żadnych zachowań.
Oto przykład napisany w 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}";
}
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-04-16 13:00:38
POCO oznacza "zwykły stary obiekt CLR".
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-10-30 12:32:52
Aby dodać pozostałe odpowiedzi, wszystkie terminy POxx wydają się pochodzić z POTS ( zwykłe stare Usługi telefoniczne).
POX, używany do definiowania prostego (zwykłego starego) XML, a nie złożonych wielowarstwowych rzeczy związanych z odpoczynkiem, mydłem itp., był użytecznym i mgliście zabawnym terminem. Po (wstawić język z wyboru)o terminy raczej nosić żart cienki.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-10-30 12:38:36
[[0]} W. NET POCO jest 'zwykłym starym obiektem CLR'. Nie jest to " zwykły stary obiekt C#"...
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-02-13 16:20:49
W języku Java typowo "PO" oznacza "zwykły stary". Reszta może być trudna, więc zgaduję ,że twój przykład (w kontekście Javy) to "zwykły stary obiekt klasy".
Kilka innych przykładów
- POJO (plain old java object)
- POJI (plain old java interface)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-11-16 06:30:30
Ciekawe. Jedyne, co wiedziałem, że ma coś wspólnego z programowaniem i ma w nim POCO, to POCO C++ framework .
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-11-16 06:41:58
W Warunkach WPF MVVM Klasa POCO to taka, która nie odpala zdarzeń Właściwości
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-01-01 08:22:39
Chociaż jestem pewien, że POCO oznacza zwykły stary obiekt klasy lub zwykły stary obiekt C dla 99,9% ludzi tutaj, POCO jest również Animator Pro (Autodesk) zbudowany w języku skryptowym.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-07-18 14:36:11
POCO to zwykły stary obiekt CLR, który reprezentuje stan i zachowanie aplikacji pod względem jej domeny problemowej. jest to klasa czysta, bez dziedziczenia, bez żadnych atrybutów. Przykład:
public class Customer
{
public int Id { get; set; }
public string Name { get; set; }
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-01-25 04:04:35