Sorun
Son zamanlarda Singletons kötü ve bağımlılık enjeksiyon ("arayüzler kullanarak" olarak anlıyorum) nasıl daha iyi hakkında çok şey okudum. Bunun bir kısmını geri aramalar / arayüzler / DI ile uyguladığımda ve arayüz ayırma prensibine bağlı kaldığımda, oldukça karışıklık yaşadım.
Bir UI ebeveyninin temelde tüm çocuklarının birleşimlerinin bağımlılıkları, bu nedenle bir UI öğesi hiyerarşisi ne kadar yüksek olursa, kurucusu o kadar şişirilmişti.
UI hiyerarşisinin en üstünde, geçerli seçim hakkındaki bilgileri ve değişiklikleri yansıtması gereken bir 3B modele referans tutan bir Uygulama sınıfı vardı. Uygulama sınıfı 8 arayüz uyguluyordu ve bu gelecek ürünlerin (/ arayüzlerin) sadece beşte biri kadardı!
Şu anda mevcut seçimi ve kendilerini güncellemek için bir işlevi olan UI öğeleri tutan bir singleton ile çalışıyorum. Bu işlev, kullanıcı arabirimi ağacını ve kullanıcı arabirimi öğelerini kandırır ve ardından geçerli seçim single'ına gerektiği gibi erişir. Kod bana bu şekilde daha temiz görünüyor.
Soru
Bu proje için bir singleton belki uygun mu?
Değilse, DI'yi benim düşüncemde ve / veya uygulamamda çok hantal yapan temel bir kusur var mı?
Proje hakkında ek bilgi
Tür: çan ve ıslık ile daireler için alışveriş sepeti
Boyutu: kod ve UI için 2 adam-ay
Bakım: Çalışan güncelleme yok, ama belki "sürüm 2.0" sonra
Çevre: Bir Varlık kullanan Birlik C # kullanma Bileşen sistemi
Neredeyse tüm durumlarda, kullanıcı etkileşimi birkaç eylemi tetikler. Örneğin, kullanıcı bir öğe seçtiğinde
- bu öğeyi ve açıklamasını gösteren kullanıcı arayüzü bölümünün güncellenmesi gerekir. Bunun için, fiyatı hesaplamak için bir 3d modelden biraz bilgi alması gerekir.
- Kullanıcı arayüzüne ek olarak, toplam toplam fiyatın güncellenmesi gerekir
- değişiklikleri burada görüntülemek için 3B modeldeki bir sınıftaki karşılık gelen bir işlevin çağrılması gerekir