2010-12-14 10 views
6

Poszukuję sposobu zaprojektowania aplikacji C#. Rozumiem model trójwarstwowy, ale idk, jak zastosować to w dobrym projekcie C#.Rozdzielanie formularzy i klas Windows C#

Wygląda na kilka samouczków mvc asp.net, ale szukam samouczka opartych na windows-formula.

Czy istnieje książka lub strona internetowa, aby dowiedzieć się sposób realizacji tego?

+1

Szukam czegoś bardziej tradycyjnego. – Nick

Odpowiedz

1

Pierwszą rzeczą, którą powinieneś wiedzieć, jest to, że wzorce projektowe nie są uniwersalne i dlatego nie ma czegoś takiego jak "Sposób na wdrożenie wzoru".

Jeśli masz na myśli tylko model 3-warstwowy, to MVC jest dobrym wyborem, ponieważ wyraźnie oddziela każdą warstwę od drugiej, w przypadku projektowania formularzy Windows szukaj samouczków w Entity Framework (lub po prostu LINQ), które wzdłuż klas obsługujących logika aplikacji, staje się warstwą modelu, wszystkimi formularzami, klasami używanymi do prezentacji danych, są twoje poglądy i, oczywiście, kontrolery użytkowników są dobrze ... to, twój kontroler.

Polecam zapoznać się z witryną internetową DoFactory, która ma duży zasięg na wielu wzorach projektowych.

Należy również zauważyć, że nie można znaleźć implementacji w doFactory, to tylko wzorzec dla wielu wzorców projektowych. JIC.

+0

Dzięki Pedro. ik nie ma jednego sposobu na wdrożenie. Szukam sprawdzonego i prostego sposobu na zrobienie tego. źle sprawdzić dofactory. jeszcze raz. – Nick

+1

Mogę się mylić, ale czuję, że twoja odpowiedź musi być edytowana coz, "wszystkie klasy, które obsługują logikę aplikacji" nie jest 'widokiem', jego' kontrolerem', a formularze są 'poglądami' – FosterZ

+0

UUufff! ! Dziękuję za poprawkę :) – PedroC88

0

Witam, jeśli korzystasz z Win Forms, polecam wybrać wzór MVP. Jest jeszcze jeden wzorzec MVVM (który jest najczęściej używany w WPF i Silverlight), ale nie wiem, czy dotyczy on formularzy Win.

3

Wierzę, że traditional MVC jest przesadą dla WinForm. Formularz jest widokiem i rzadko potrzeba osobnego kontrolera. Model jest tylko klasą (zazwyczaj implementuje INotifyPropertyChanged). Możesz użyć powiązania danych, aby powiadomić widok, że model się zmienił.

Ważnym punktem jest minimalizacja kodu pod przyciskami. Jeśli jest to kod formularza, powinien (a) być specyficzny dla interfejsu użytkownika lub (b) przekazywać połączenia do modelu. Każda logika biznesowa powinna znajdować się w modelu lub na klasach, od których zależy model.

Unikaj modelowania God Object. Może przekazywać wewnętrznie innym klasom.

EDYCJA: Możesz rozważyć przeniesienie powiązanych danych do oddzielnego obiektu, którego właścicielem jest model. Nazwałbym to Presentation Model, ale nie chcę wkładać słów w usta Fowlera.

EDIT2: Ważne - model musi mieć żadnej wiedzy zdania i NO kod UI (takich jak dialogi).

Powiązane problemy