浅尝三层架构
为什么需要三层结构?
对于开发系统来说,我们要考虑系统性能如何?是否具有足够的容错能力?能否从容应对客户不断变化的需求?面向对象思想的确很酷,可是在工程实践中的实际应用状况又是怎样的?怎样才能使我们的代码具有最大的“可重用性”和“可扩展性”?传说中的三层结构和设计模式又是什么东西?层次结构在现实社会里随处可见。记得有个笑话讲有个村长得意地向他老婆吹牛:“全中国只有四个人比我官大,乡长、县长、省长和国务院总理”。这个笑话也体现了真实社会中分层的现象。社会人群会分层,公司人员结构也会分层,楼房是分层的,甚至做包子的笼屉都是分层的。虽然分层的目的各有不同,但都是为解决某一问题而产生的。所以,分层架构其实是为了解决某一问题而产生的一种解决方案。
示例:
1 using System;
2 using System.Collections.Generic;
3 using System.ComponentModel;
4 using System.Data;
5 using System.Drawing;
6 using System.Text;
7 using System.Windows.Forms;
8 using System.Data.SqlClient;
9
10 namespace MySchool
11 {
12 /// <summary>
13 /// 登录窗体
14 /// </summary>
15 public partial class LoginForm : Form
16 {
17 public LoginForm()
18 {
19 InitializeComponent();
20 }
21
22 // 点击取消按钮,关闭应用程序
23 private void btnCancel_Click(object sender, EventArgs e)
24 {
25 Application.Exit();
26 }
27
28 // 点击登录按钮时,设置用户名和登录类型
29 private void btnLogIn_Click(object sender, EventArgs e)
30 {
31 bool isValidUser = false; // 标识是否为合法用户
32 string message = ""; // 如果登录失败,显示的消息提示
33
34 // 如果验证通过,就显示相应的用户窗体,并将当前窗体设为不可见
35 if (ValidateInput())
36 {
37 // 调用用户验证方法
38 isValidUser = ValidateUser(
39 cboLogInType.Text,
40 txtLogInId.Text,
41 txtLogInPwd.Text,
42 ref message);
43
44 // 如果是合法用户,显示相应的窗体
45 if (isValidUser)
46 {
47 // 将输入的用户名保存到静态变量中
48 UserHelper.loginId = txtLogInId.Text;
49 // 将选择的登录类型保存到静态变量中
50 UserHelper.loginType = cboLogInType.Text;
51
52 ShowUserForm();
53
54 this.Visible = false;
55 }
56 // 如果登录失败,显示相应的消息
57 else
58 {
59 MessageBox.Show(message, "登录失败",
60 MessageBoxButtons.OK, MessageBoxIcon.Error);
61 }
62 }
63 }
64
65 // 验证用户是否进行了输入和选择
66 private bool ValidateInput()
67 {
68 if (txtLogInId.Text.Trim() == "")
69 {
70 MessageBox.Show("请输入用户名", "输入提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
71 txtLogInId.Focus();
72 return false;
73 }
74 else if (txtLogInPwd.Text.Trim() == "")
75 {
76 MessageBox.Show("请输入密码", "输入提示", Message
补充:Web开发 , ASP.Net ,