Adakah yang bisa mendefinisikan apa arti sebenarnya 'POCO'? Saya lebih sering menemukan istilah, dan saya bertanya-tanya apakah ini hanya tentang kelas biasa atau itu berarti sesuatu yang lebih?
Adakah yang bisa mendefinisikan apa arti sebenarnya 'POCO'? Saya lebih sering menemukan istilah, dan saya bertanya-tanya apakah ini hanya tentang kelas biasa atau itu berarti sesuatu yang lebih?
Jawaban:
"Objek C # Biasa Lama"
Hanya kelas normal, tidak ada atribut yang menggambarkan masalah infrastruktur atau tanggung jawab lain yang seharusnya tidak dimiliki oleh objek domain Anda.
EDIT - seperti jawaban lain telah menyatakan, secara teknis "Plain Old CLR Object" tetapi saya, seperti komentar David Arno, lebih suka "Plain Old Class Object" untuk menghindari ikatan dengan bahasa atau teknologi tertentu.
UNTUK MENJELASKAN: Dengan kata lain, mereka tidak berasal dari beberapa kelas dasar khusus, juga tidak mengembalikan tipe khusus untuk properti mereka.
Lihat di bawah untuk contoh masing-masing.
Contoh POCO:
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
}
Contoh sesuatu yang bukan POCO:
public class PersonComponent : System.ComponentModel.Component
{
[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
public string Name { get; set; }
public int Age { get; set; }
}
Contoh di atas keduanya mewarisi dari kelas khusus untuk memberikannya perilaku tambahan serta menggunakan atribut khusus untuk mengubah perilaku ... properti yang sama ada di kedua kelas, tetapi satu bukan hanya objek tua biasa lagi.
System.Object
adalah POCO. Jika itu mewarisi dari ExternalFramework.OrmMapperBase
atau sesuatu seperti itu, itu bukan POCO lagi.
Kebanyakan orang mengatakannya - Obyek Old CLR Biasa (sebagai lawan dari POJO sebelumnya - Obyek Old Java Biasa)
POJO yang keluar dari EJB, yang mengharuskan Anda mewarisi dari kelas induk tertentu untuk hal-hal seperti objek nilai (apa yang Anda dapatkan dari kueri dalam ORM atau sejenisnya), jadi jika Anda ingin pindah dari EJB (misalnya ke Spring), kamu dimasukkan.
POJO hanyalah kelas yang tidak memaksa pewarisan atau markup atribut apa pun untuk membuatnya "bekerja" dalam kerangka apa pun yang Anda gunakan.
POCO sama, kecuali di .NET.
Umumnya ini akan digunakan di sekitar ORM - yang lebih tua (dan beberapa yang sekarang) mengharuskan Anda untuk mewarisi dari kelas dasar tertentu, yang mengikat Anda dengan produk itu. Yang lebih baru tidak (nhibernate menjadi varian yang saya tahu) - Anda hanya membuat kelas, mendaftar dengan ORM, dan Anda tidak aktif. Jauh lebih mudah.
Saya mungkin salah tentang ini .. tapi bagaimanapun, saya pikir POCO adalah Kelas Tua Biasa objek CLR dan itu berasal dari POJO objek tua Jawa. POCO adalah kelas yang menyimpan data dan tidak memiliki perilaku.
Berikut adalah contoh yang ditulis dalam 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}";
}
}
POCO adalah singkatan dari "Plain Old CLR Object".
Untuk menambahkan jawaban lain, semua istilah POxx tampaknya berasal dari POTS ( layanan telepon lama biasa) ).
POX, yang digunakan untuk mendefinisikan XML (sederhana tua) sederhana, daripada hal-hal kompleks berlapis-lapis yang terkait dengan REST, SOAP dll, adalah istilah yang berguna, dan agak lucu. PO (masukkan bahasa pilihan) O istilah telah agak memakai lelucon tipis.
Menarik. Satu-satunya hal yang saya tahu yang harus dilakukan dengan pemrograman dan memiliki POCO di dalamnya adalah kerangka POCO C ++ .
Dalam istilah WPF MVVM, kelas POCO adalah kelas yang tidak memadamkan acara PropertyChanged
Sementara saya yakin POCO berarti Obyek Kelas Lama Biasa atau Obyek Tua Tua C untuk 99.9% orang di sini, POCO juga merupakan Animator Pro (Autodesk) yang dibangun dalam bahasa scripting.
POCO adalah objek CLR tua polos, yang mewakili keadaan dan perilaku aplikasi dalam hal domain masalahnya. ini adalah kelas murni, tanpa warisan, tanpa atribut apa pun. Contoh:
public class Customer
{
public int Id { get; set; }
public string Name { get; set; }
}