Po studiach pojawia się kod, w którym muszę zmniejszyć sprzężenie. Ale nie rozumiem w pełni wszystkich koncepcji i chciałbym prostego przykładu, aby mi pomóc. Aby zacząć, mam klasę osoby z jednym polem, nazwą. Mam w tej klasie metodę łączenia jakiegoś tekstu.Redukcja sprzężenia prosty przykład potrzebny dla początkujących
Wiem, że jest to głupi przykład i większość ludzi nigdy nie rozważałby zmniejszenia sprzężenia w sytuacjach tak prostych jak ten, ale chcę tylko prostego przykładu, aby pomóc mi w pełni zrozumieć kod i koncepcje razem.
W kodzie za głównym oknem umieszczam pole tekstowe i przycisk. Po załadowaniu okna pokazuje aktualną wartość pola person x name. Po kliknięciu przycisku wywoływana jest metoda x.PersonAddText. Obecnie ten przykład ma sprzężenie obliczone na 8. Z 3 dla zdarzenia kliknięcia przycisku i 3 dla zdarzenia załadowanego przez okno.
Czy jest jakiś sposób, używając tego przykładu, możemy obniżyć to do mniej niż dla jednego lub obu z nich.
Poniżej jest cały mój kod:
Osoba Klasa:
public class Person
{
//Fields
private string name;
//Properties
public string Name
{
get { return name; }
set { name = value; }
}
//Constructors
public Person()
{
name = "joe";
}
//Methods
public string PersonAddText(string text)
{
return name += " - " + text;
}
//Interfaces (or additional code below here please to aid understanding)
}
mojego kodu Behind:
Person x = new Person();
public MainWindow()
{
InitializeComponent();
}
private void Window_Loaded(object sender, RoutedEventArgs e)
{
txtname.Text = x.Name;
}
private void button1_Click(object sender, RoutedEventArgs e)
{
txtname.Text = x.PersonAddText(txtname.Text);
txtname.Text = x.Name;
}
mój prosty XAML:
<Grid>
<TextBox Name="txtname" Margin="12,12,12,0" Height="23" VerticalAlignment="Top" />
<Button Content="Add Text" Margin="12,41,12,0" Name="button1" VerticalAlignment="Top" Click="button1_Click" />
</Grid>
Mam wielka trudność unde Opanuj tutoriale w Internecie wyjaśniając to. Z tego co widzę są 3 sposoby, aby to zrobić (byłoby miło, jeśli to możliwe, aby mieć mojego kodu powyżej przerobiona na przykład wszystkich trzech):
- lokalizatora usług
- Dependency Injection
- Inversion kontroli (MKOl)
article wyjaśniając rzeczy Czytałem jest doskonała, ale przykłady nie są istotne dla mnie, jest on przy użyciu VB i ASP.NET z ciągów połączenia bazy danych. Jest to całkowicie sprzeczne z tym, czego potrzebuję i nie chcę myśleć o tym, jak przetłumaczyć kod, ucząc się tych pojęć i zastanawiając się, jak zastosować je do czegoś istotnego. Chociaż przykład jest dobry, to po prostu za dużo, a ja naprawdę doceniam każdą dodatkową pomoc.
Edytuj historię: poprawiono pisownię. Dodano następujące informacje w celu wyjaśnienia mojego pytania:
Rozumiem teorię leżącą u podstaw sprzężenia i kohezji i dlaczego należy ją zredukować, a zwiększyć drugą. Ale nigdy nie napisaliśmy żadnych przykładów na studiach. Poza tym, chociaż nie jest to na studiach, rozumiem interfejsy. Jednak nie rozumiem, jak z nich korzystać, aby zmniejszyć sprzężenie.
Dodano link do the article I refrenced above.
Edit 2: Do tej pory, co ja teraz mam jest następujący:
public interface IPerson
{
string Name { get; set; }
string PersonAddText(string text);
}
public class Person : IPerson
{
//The code from the person class above
}
Jak mogę teraz użyć tego w kodzie MainWindow tyłu?Domyślam należy wymienić
Person x = new Person();
z
IPerson x = new Person();
Czy to poprawne, a jeśli tak, to czy jest coś jeszcze muszę zrobić. Powodem, dla którego pytam, jest to, że nadal nie widzę żadnej redukcji w liczbach sprzężenia kodu zgłaszanych przez studio graficzne (infact, zwiększa to o 1 w głównym kodzie okna).
Co _exactly_ nie rozumiesz? Z jaką koncepcją masz problemy? – Oded
Wiem, co oznacza coupeling i spójność w teorii. Ale nie rozumiem, jak to zakodować. Zwłaszcza, że nigdy nie obejmowaliśmy interfejsów na studiach (tak, wiem, świetna uczelnia). Rozumiem także interfejsy, ale nie wiem, jak je wykorzystać, aby zmniejszyć coupeling. –