2016-04-02 35 views
0

Şu anda kişisel bir projede tasarım problemim var, hem bir Android uygulaması (xamarin kullanarak) hem de bir C# wpf windows uygulaması geliştiriyorum.Çok platformlu lib için MVC tasarım modeli

Masaüstündeki uygulama, kullanıcının android uygulamasında öğrencinin çalışabileceği bazı egzersizler tasarlamasına yardımcı olur. Ama şu anda, kod için, her iki uygulamaya da ortak bir kütüphaneye sahip olmak için iyi bir yapıya sahip olmak istiyorum. Sorun, MVC tasarım deseninin ardından, modelimdeki her şeyin görünümden bağımsız olması gerektiğidir. Veya Android'de bir egzersiz çalışırken ve öğrencinin hangi düğmeyi basılı tuttuğunu takip etmem gerekiyor. Veya egzersiz yapıldıktan sonra bu tür bilgiler kaydedilmez ve pencerelerin uygulama açısından yararsız bilgilerdir. Bu durumda, bu uygulamayı saklayabilmem için android uygulaması için modelimin etrafında bir tür sarıcı yazmalı mıyım? Görünüşe göre bu şekilde MVC modeline karşı çıkıyor, ama buna bir çözüm bulamıyorum. burada daha iyi sorunumu göstermek için benim modelidir: Bu gerçekten yapılandırılmış olması gerekir çünkü

public class File 
{ 
    public string Name { get; set; } = "file"; 
    public List<Module> Modules { get; set; } = new List<Module>(); 
} 

public class Module 
{ 
    public string Title { get; set; } = string.Empty; 
    public string Color { get; set; } = "0xFF0000"; 
    public List<Exercice> Exercices { get; set; } = new List<Exercice>(); 
} 

public class Exercice 
{ 
    public string Name { get; set; } = string.Empty; 
    public List<string> Sounds { get; set; } = new List<string>(); 
    public List<Unit> Units { get; set; } = new List<Unit>(); 
    public bool Randomize { get; set; } = false; 
} 

public class Unit 
{ 
    public string Text { get; set; } = string.Empty; 
    public List<string> Sounds { get; set; } = new List<string>(); 
    public EType Type { get; set; } 
    public bool Solution { get; set; } = true; 
    public List<UnitChild> Units { get; set; } = new List<UnitChild>(); 
} 

public class UnitChild 
{ 
    public string Text { get; set; } = string.Empty; 
    public List<string> Sounds { get; set; } = new List<string>(); 
    public EType Type { get; set; } 
    public bool Solution { get; set; } = true; 
} 

public enum EType 
{ 
    Touch, 
    Display, 
    Voice 
} 

Her şey, bir YAML dosyasından yüklenir ve ayrıştırılır.

Bu sınıfın her birinde, basıldığı (ve UnitChild sınıflarında) tutmak istemiyorum çünkü gereksizdir ve denetleyicide saklanması gerekir (şu anda yazmamıştım) Çünkü bunu gerçek kodlamadan önce çözmek istiyorum. Temel olarak, tüm alanlar alıştırmaların temelidir ve Windows uygulaması için gereken tek veridir.

Yardımlarınız için teşekkürler!

Bu MVC tasarım deseni belgeleri okuma ve C# WPF programlama daha spesifik makaleler iken

+0

Lütfen ortak bir lib için motivasyonu tekrar açıklayınız. Amacı nedir? –

+0

Mümkün olan en fazla kodu yeniden kullanmak istiyorum, bu yüzden lib libosu egzersiz dosyasının açılması, egzersizlerin oluşturulması vb. Ile ilgili her şeyi ele alıyor. Bu yüzden sadece her iki uygulamadan da fonksiyonu arayabilir ve kolayca değiştirebilirim. lib'i doğrudan değiştirerek davranış. – jubertal

+0

Egzersizleri açmak ve yönetmek doğruysa, uygulamanızın ** iş mantığı **. ** Her iki platformda da ortak olan ** işlevsellikler nelerdir? UI işlevselliklerini ortak lib'a aktarmaya çalışıyormuşsunuz gibi geliyor, ancak UI platformu bağımlı ve hiç de yaygın değil. –

cevap

0

dağınık kendimle

bu anladım görünmüyor umuyoruz.

Durumumdaysanız, yapmanız gereken şey modelinizi temiz tutmak ve yalnızca her iki uygulamadaki paylaşılan değişkenleri ve denetleyicideki uygulamaya özgü değişkenleri korumaktır. Görünüm ve Model.

İlgili konular