Nesnelerin Çeşitleri
Tartışmamızın amacı, nesnelerimizi üç farklı türe ayıralım:
Bunlar işi yapan nesnelerdir. Parayı bir çek hesabından diğerine taşırlar, emirleri yerine getirirler ve iş yazılımının gerçekleştirmesini beklediğimiz diğer tüm eylemleri yaparlar.
Etki alanı mantığı nesneleri normalde erişimciler gerektirmez (alıcılar ve ayarlayıcılar). Aksine, nesneyi bir yapıcı aracılığıyla bağımlılıklarını asarak yaratır ve sonra nesneyi yöntemlerle manipüle eder (söyleme, sorma).
Veri Aktarım Nesneleri saf durumdur; herhangi bir iş mantığı içermiyorlar. Her zaman erişimcileri olacak. Onları değişmez bir şekilde yazıp yazmamaya bağlı olarak ayarlayıcıları olabilir veya olmayabilir . Alanlarınızı yapıcıda ayarlayacaksınız ve değerleri nesnenin ömrü boyunca değişmeyecek veya erişimcileriniz okuma / yazma olacaktır. Uygulamada, bu nesneler tipik olarak değiştirilebilir, böylece bir kullanıcı bunları düzenleyebilir.
Görünüm Modeli nesneleri, görüntülenebilir / düzenlenebilir bir veri sunumu içerir. Genellikle veri doğrulama ile sınırlı olan iş mantığı içerebilirler. Görünüm Modeli nesnesinin bir örneği, bir Müşteri nesnesi, bir Fatura Başlığı nesnesi ve Fatura Satır Öğeleri içeren bir InvoiceViewModel olabilir. Görünüm Model nesneleri her zaman erişimciler içerir.
Dolayısıyla saha erişimcilerini içermemesi anlamında "saf" olacak tek nesne türü Etki Alanı Mantığı nesnesi olacaktır. Böyle bir nesnenin seri hale getirilmesi, mevcut "hesaplama durumunu" kaydeder, böylece işlemeyi tamamlamak için daha sonra alınabilir. Görünüm Modelleri ve DTO'lar serbestçe seri hale getirilebilir, ancak pratikte verileri normalde bir veritabanına kaydedilir.
Serileştirme, bağımlılıklar ve eşleşme
Serileştirmenin bağımlılıklar yarattığı doğru olsa da, uyumlu bir nesneye seri hale getirmeniz gerektiğine bağlı olarak, serileştirme yapılandırmanızı değiştirmeniz gerekmemektedir. İyi seri hale getirme mekanizmaları genel amaçtır; Değerleri üyelere eşleyebildiği sürece, bir mülkün veya üyenin adını değiştirip değiştirmemeniz umrumda değil. Uygulamada, bu yalnızca seri hale getirme gösterimini (xml, json, her neyse) yeni nesnenizle uyumlu hale getirmek için nesne örneğini yeniden serileştirmeniz gerektiği anlamına gelir; serileştirici üzerinde hiçbir yapılandırma değişikliği gerekmemelidir.
Nesnelerin nasıl serileştirildiğiyle ilgilenmemesi gerektiği doğrudur. Bu tür endişelerin etki alanı sınıflarından ayrıştırılmasının bir yolunu zaten açıkladınız: yansıma. Ancak seri hale getirici , nesneleri nasıl seri hale getirdiği ve seri hale getirdiği konusunda endişeli olmalıdır ; Sonuçta bu onun işlevidir. Nesnelerinizi serileştirme işleminizden ayrı tutmanızın yolu, serileştirmeyi tüm nesne türleri üzerinde çalışabilen genel amaçlı bir işlev yapmaktır .
İnsanların kafasını karıştıran şeylerden biri, dekuplajın her iki yönde de gerçekleşmesi gerektiğidir. O değil; sadece bir yönde çalışması gerekir . Uygulamada, asla tamamen ayrılmaz; her zaman bazı bağlantı vardır. Gevşek bağlamanın amacı, tüm bağımlılıkları ortadan kaldırmak yerine kod bakımını kolaylaştırmaktır.