传参数与传实体、返回实体与返表——三层架构登录实例

在用三层做窗体登录实例的时候,暂时没有加设计模式和反射配置,与以前做的《机房收费系统》相比,除了引入分层的理念外,最大的改观就是数据的传递由传参升级成了传实体。

先看下用传参数方式的登录按钮click事件

通过参数传递乍看起来清晰易读,但是这样的程序耦合度太高,会为以后的数据变动和维护埋下隐患。例如,需要传递的数据增加了一个ID,user=mgr.SelectUserLogin(userName,password)行代码就要修改一次,如果再增加一个Level呢?难道需求每变动一次,就要改动一次代码吗?现在需要传递的参数才几个,假设做大一点的系统,面对十几二十个参数,每个用到它的地方都要改,这样不累也会被烦死的。

为了解决这个问题,实体对象应运而生,它把这些变化都封装到了一个类中,例子改动如下

传实体的方式很好的解决了这样的安全隐患,所以在三层架构中虽然各个层次的程序集只是引用实体,但是它的作用不可小觑。

传参数与传实体、返回实体与返表——三层架构登录实例

时间: 2024-10-07 04:56:43

传参数与传实体、返回实体与返表——三层架构登录实例的相关文章

传參数与传实体、返回实体与返表——三层架构登录实例

用三层做窗口登录实例,与曾经做的<机房收费系统>相比,除了引入分层的理念外,最大的改观就是数据的传递由传參升级成了传实体,而查询数据库的返回结果也有了返回实体与返表的选择 传參数与传实体 窗口登录实例的的UI层是接收用户操作的最外层,数据经它转交给BLL层,如今先看下我们用以往传參数的方式,来编写的登录buttonclick事件 通过參数传递乍看起来清晰易读,可是这种程序耦合度太高,会为以后的数据变动和维护埋下隐患.比如,须要传递的数据添加了一个ID,user=mgr.SelectUserLo

自定义实体类在三层架构之间传递数据

自定义实体类是专门承载业务实体数据的类,一般将方法分离出来,只包含属性和字段的定义.每个实体类对应数据库中的一个表,每个属性对应表中的一个相应的字段.使用实体类属于面向对象编程的思想,将每个表封装成对应的类. 1. 为什么使用自定义实体类 (1)使程序更加灵活.如果数据库发生了更改,只需要修改数据实体类的代码,其他层的代码修改量很小. (2)使用面向对象思想将数据库中的表抽象为类,消除了关系数据与类的差别,使程序维护和扩展更方便. (3)更有利于分层架构设计. 2. 使用自定义实体类作为三层架构

重构小结——从传参到传实体,从datatable到泛型

在介绍这些内容之前,我们首先来了解什么是面向对象,面向对象的核心是什么? 一.面向对象的简单介绍 起初,"面向对象"是专指在程序设计中采用封装.继承.多态等设计方法.但,后来面向对象的思想设计到了各个方面.一切事物皆对象,通过面向对象的方式,将现实世界的事物抽象成对象,现实世界中的关系抽象成类.继承,帮助人们实现对现实世界的抽象与数字建模.通过面向对象的方法,更利于用人理解的方式对复杂系统进行分析.设计与编程. 所以我们可以简单的将面向对象的核心概况为对象,也可以说是类. 二.实体的简

传引用作为形参和返回值_节省参数拷贝的时间

基本的传引用概念 #include <bits/stdc++.h> using namespace std; //说出以下两个函数的区别 int& whatf(int &a,int &b) //如果不希望函数执行过程中 某变量被修改 用const限定 { a=3;b=2; return a; } int whath(int a,int b) { a=3;b=2; return a; } int main() { int a,b; whatf(a,b)++; cout&l

js上传文件带参数,并且,返回给前台文件路径,解析上传的xml文件,存储到数据库中

ajaxfileupload.js jQuery.extend({ createUploadIframe: function(id, uri) { //create frame var frameId = 'jUploadFrame' + id; if(window.ActiveXObject) { var io = document.createElement('<iframe id="' + frameId + '" name="' + frameId + '&qu

函数(定义,有无返回值,参数以及传参问题)

1.定义 def test(): x+=1 return x好处:*减少代码重用 *保持一致性和易维护性 *可扩展性2.关于有无返回值 无:过程就是没有返回值的函数 有:一个————返回本身 def test(): s=[5,4,32,556,22] return s print(test()) #打印结果 [5, 4, 32, 556, 22] 多个————返回元祖 def test(): l=[5,4,32,556,22] s='fjy' return l,s print(test()) #

关于内存的划分和传引用传参数的区别

1.堆 2.栈 空间较小 3.全局 4.代码段 要搞懂每个区域放什么东西 堆 复杂类型栈 变量静 代 复杂类型对象没有指针指的时候,堆中的内容垃圾回收 1函数传对象的时候,其实是首先在堆里面开一个内存放对象属性内容,在栈里面开一个内存放一个变量,变量里面放地址,指向堆的那个对象,传对象的时候,是在栈里面再开一个内存,里面的内容是刚才那个指向对象的栈变量的地址,也是指向堆的那个对象,函数返回的时候,这个赋值过来的指针断开.在函数里面的修改也会对原来对象产生变化. 2而传引用对象进去的时候,用的还是

setTimeOut传参数

最近,因项目需要,需要实现setTimeOut传参数的功能,搜索了很多的资源.终于找到一个比较好的方法了,记录下来,与大家分享. 无论是window.setTimeOut还是window.setInterval,在使用函数名作为调用句柄是都不能带参数. 先看一段简单的javascript代码: 1 function show() 2 { 3 alert("Hello World"); 4 } 5 setTimeout(show,1000); 代码结果是:1秒中之后输出Hello Wor

传参数应该用哪种形式&mdash;&mdash;值、引用、指针?

类型:C++ & Qt4,创建时间:十二月 30, 2011, 7:43 p.m. 标题无"转载"即原创文章,版权所有.转载请注明来源:http://hgoldfish.com/blogs/article/19/. 最近写C++程序经常郁闷传参数的时候应该传值.传引用还是传指针. 传值 :int func(User u); 传指针: int func(User* u); 传引用: int func(User& u); 传值是传参数最常见的方法,相当简单,是C++的基础传