Простой пример уменьшения связи, необходимый для новичка

Только что закончил колледж и наткнулся на код, в котором мне нужно уменьшить связанность. Но я не полностью понимаю все концепции и хотел бы, чтобы простой пример помог мне. Чтобы вы начали, у меня есть класс человека с одним полем, именем. У меня есть метод в этом классе для объединения некоторого текста.

Я знаю, что это глупый пример, и большинство людей никогда не задумаются об уменьшении связанности в таких простых ситуациях, как эта, но мне нужен только простой пример, который поможет мне полностью понять код и концепции вместе.

В коде за главным окном я разместил текстовое поле и кнопку. Когда окно загружается, оно показывает текущее значение поля имени человека x. При нажатии кнопки вызывается метод x.PersonAddText. В настоящее время в этом примере связь рассчитывается как 8. С 3 для события нажатия кнопки и 3 для события загрузки окна.

Можно ли каким-либо образом, используя этот пример, мы могли бы уменьшить это значение для одного или обоих из них.

Ниже приведен весь мой код:

My Person Class:

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)
}

My Code 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;
    }

My Simple XAML:


    
    

Мне очень трудно понять обучающие материалы в Интернете, объясняющие это.Из того, что я вижу, есть 3 способа сделать это (было бы неплохо, если это возможно, преобразовать мой код выше в пример всех трех):

  • Service Locator
  • Dependency Injection
  • Inversion of control ( IoC)

Статья , объясняющая то, что я прочитал, превосходна, но примеры не относятся ко мне, поскольку он использует VB и ASP.Net со строками подключения к базе данных. Это полностью противоположно тому, что мне нужно, и я не хочу думать о том, как перевести код, изучая концепции, а также думать о том, как применить его к чему-то важному. Хотя пример хорош, его слишком много, и я был бы очень признателен за любую дополнительную помощь.

История редактирования: исправлены орфографические ошибки. Добавлено следующее, чтобы прояснить мой вопрос:

Я понимаю теорию, лежащую в основе связи и когезии, и почему вы должны уменьшить одно и увеличить другое. Но нам никогда не приходилось кодировать какие-либо примеры в колледже. Кроме того, хотя я и не учился в колледже, я разбираюсь в интерфейсах. Однако я не понимаю, как их использовать для уменьшения связи.

Добавлена ​​ссылка на статью, на которую я ссылался выше.

Редактировать 2: На данный момент я получил следующее:

public interface IPerson 
{ 
    string Name { get; set; } 
    string PersonAddText(string text); 
} 

public class Person : IPerson 
{
    //The code from the person class above
}

Как мне теперь использовать это в коде основного окна? Я предполагаю, что мне следует заменить

Person x = new Person();

на

IPerson x = new Person(); 

. Правильно ли это, и если да, нужно ли мне что-то еще сделать. Причина, по которой я спрашиваю, заключается в том, что я до сих пор не вижу никакого сокращения показателей связывания кода, о которых сообщает Visual Studio (фактически, он увеличивает его на 1 в коде главного окна позади).

7
задан Francis Rodgers 9 May 2012 в 12:03
поделиться