当前位置:编程学习 > 网站相关 >>

怎样才能开发出好的软件(二)

 

第一篇:http://www.zzzyk.com/kf/201112/113192.html

系统架构就是系统的骨骼,如果骨骼没有设计好,做出来的软件也会是畸形,怎样的架构才是合理的,怎样的架构才能造就一个健康的软件,那么健康的软件是什么样的?首先要满足用户需求,其次要有可修改性、灵活性、可维护性,也就是当用户需求改变时,尽量少更改已经封装好的东西,而且还要达到目的,这样的要求传统的面向过程的编码方式是很难实现的,而MVC三层架构就能实现这一切,V代表界面层,C代表业务逻辑层,M代表数据访问层。这个三层架构只是宏观意义上的三层,其实根据系统架构的需要可以分为更多层。除了这三层外还有一层是实体层,实体层对应着数据库中的表,每一张表映射为一个实体,下面介绍一下三层架构具体是什么样的:

 

1.      界面层只负责与用户交互,用户输入信息,在界面进行基本验证(是否为空、是否是数字等)将数据传到业务逻辑层,经过业务逻辑层处理后返回给界面层信息,界面将信息显示给用户。

2.      业务逻辑层负责接受界面的数据,进行业务处理(包括一些逻辑判断,计算等),需要数据库中的数据就调用数据访问层的方法,业务处理后给界面返回数据。

3.      数据访问层主要是一些操作数据库的类,查出的数据返回到业务逻辑层。

4.      实体层中每一个实体对应着数据库中的每一张表,实体类作为参数在三层之间传递。

 

下面以添加用户为例:

界面层(UI):当用户按下添加按钮后,首先检查输入框中的数据是否合法,然后将数据赋值给用户实体中的每个字段,调用B层的添加用户方法,将用户实体作为参数传递。

 

Imports Bll 

Imports Entity 

Public Class FrmAddUser 

    '实例化B层添加用户类 

    Private BAddUser As New BllAddUser 

    '实例化用户信息实体 

    Private EUserInfo As New UserInfo 

    Private Sub btnOK_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnOK.Click 

        '判断用户名文本框的输入是否为空 

        If txtUserName.Text = "" Then 

            MsgBox("用户名不能为空", vbOKOnly + vbExclamation, "警告") 

            Exit Sub 

        End If 

        '判断密码文本框的输入是否为空 

        If txtPwd.Text = "" Then 

            MsgBox("密码不能为空", vbOKOnly + vbExclamation, "警告") 

            Exit Sub 

        End If 

        '判断是否已经选择了用户级别 

        If cmbLevel.Text = "" Then 

            MsgBox("请选择用户级别", vbOKOnly + vbExclamation, "警告") 

            Exit Sub 

        End If 

        '给实体的每个字段赋值 

        EUserInfo.strUserName = txtUserName.Text.ToString 

        EUserInfo.EuserPwd = txtPwd.Text 

        EUserInfo.EuserLevel = cmbLevel.Text 

        EUserInfo.EuserHead = FrmLogin.strUserName 

        '执行添加用户 

        Try 

            If BAddUser.AddUser(EUserInfo) Then 

                MsgBox("添加成功")  

            Else 

                MsgBox("未添加成功") 

            End If 

        Catch ex As Exception 

            MsgBox(ex.Message) 

        End Try 

        '添加后清空文本框 

        txtUserName.Text = "" 

        txtPwd.Text = "" 

        cmbLevel.Text = "" 

    End Sub 

业务逻辑层(Bll):首先判断界面传进来的用户实体是否已经存在(调用D层操作用户表中的检查用户方法),如果已经存在则抛出异常,如果不存在则向用户表中插入该用户实体(调用D层的操作用户表中的插入方法)。

 

Imports DAL 

Imports Entity 

Public Class BllAddUser 

    '实例化用户信息实体 

    Private EUserInfo As New UserInfo 

    '实例化D层的操作用户信息 

    Private DUserInfo As New DalUserInfo 

    ''' <summary> 

    ''' 添加用户 

    ''' </summary> 

    ''' <param name="EUserInfo"></param> 

    ''' <returns></returns> 

    ''' <remarks></remarks> 

    Public Function AddUser(ByVal EUserInfo As UserInfo) As Boolean 

        Dim x As Boolean = False 

        If DUserInfo.Check(EUserInfo.strUserName) Then 

            Throw New Exception("该用户已经存在") 

        Else 

            x = DUserInfo.Insert(EUserInfo) 

            Return x 

        End If 

End Function 

 

数据访问层(Dal):对数据库的操作,与数据库的连接字符串放在app.configer文件中,方便更换。其中的两个方法分别是检查数据库中是否存在某个用户,想数据库中用户表中插入一条记录。

 

Imports System.Data.SqlClient 

Imports Entity 

''' <summary> 

''' 对用户表的操作 

''' </summary> 

''' <remarks></remarks> 

 

Public Class DalUserInfo 

 

Private connStr As String = Configuration.ConfigurationSettings.AppSettings("connStr") 

 

    ''' <summary> 

    ''' 检查用户是否存在 

 &nb

补充:综合编程 , 其他综合 ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,