Приложение c# Windows Forms: отделить графический интерфейс от бизнес-логики
Я хотел бы получить несколько советов о том, как разделить пользовательский интерфейс и бизнес-логику в простом приложении C# Windows Forms.
давайте возьмем такой пример:
пользовательский интерфейс состоит из простого текстового поля и кнопки. Пользователь вводит число от 0 до 9 и нажимает кнопку. Программа должна добавить 10 к числу и обновить текстовое поле с этим значением.
часть бизнес-логики не должна иметь представления о пользовательском интерфейсе. Как это может быть свершилось?
вот пустой класс процесса (бизнес-логика):
namespace addTen
{
class Process
{
public int AddTen(int num)
{
return num + 10;
}
}
}
требование:
- когда пользователь нажимает кнопку, каким-то образом вызывается процесс::AddTen.
- текстовое поле должно быть обновлено возвращаемым значением Process:: AddTen.
Я просто не знаю, как соединить эти два.
3 ответов
сделайте свой класс "Process" общедоступным (и, как говорит @DavidStratton, измените имя):
public class MyProcess
Я бы сказал, что вы должны разобрать свой string
значение TextBox.Text
до int
:
private void button1_Click(object sender, EventArgs e)
{
MyProcess myProcess = new MyProcess();
string result = textBox1.Text;
int number;
if(int.TryParse(textBox1.Text, out number))
{
result = myProcess.AddTen(number).ToString();
}
textBox1.Text = result;
}
вы можете создать другой класс под названием " Process.КС" например. Методы, которые включают обработку или расчет данных, которые вы перемещаете туда. В вашем случае например:
public class Process
{
public int AddTen(int num)
{
return num + 10;
}
}
событие щелчка пользовательского интерфейса будет иметь вызов вашего "слоя процесса":
var myProcess = new Process();
//and then calculation
var initNumber = Convert.ToInt32(textBox.Text);
var calculatedValue = myProcess.AddTen(initNumber);
textBox.Text = calculatedValue.ToString();
таким образом, ваша бизнес-логика, такая как вычисление, хранится отдельно. Если ваш пользовательский интерфейс изменяется, вы все равно можете просто вызвать myProcess.Метод AddTen (), будь то веб -, Windows или мобильная форма.