Только что закончил колледж и наткнулся на код, в котором мне нужно уменьшить связанность. Но я не полностью понимаю все концепции и хотел бы, чтобы простой пример помог мне. Чтобы вы начали, у меня есть класс человека с одним полем, именем. У меня есть метод в этом классе для объединения некоторого текста.
Я знаю, что это глупый пример, и большинство людей никогда не задумаются об уменьшении связанности в таких простых ситуациях, как эта, но мне нужен только простой пример, который поможет мне полностью понять код и концепции вместе.
В коде за главным окном я разместил текстовое поле и кнопку. Когда окно загружается, оно показывает текущее значение поля имени человека 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 способа сделать это (было бы неплохо, если это возможно, преобразовать мой код выше в пример всех трех):
Статья , объясняющая то, что я прочитал, превосходна, но примеры не относятся ко мне, поскольку он использует 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 в коде главного окна позади).