哪些代码应该写在业务逻辑?又哪些代码应该写在界面层?
不要概念,稍微具体一点,能拿个实例说一下最好,谢谢
数据表增删改查放在数据访问。
业务逻辑放在业务层。比如说,一个会员卡,充100送100.,消费的时候,先使用充值的本金,然后使用送的钱。如果用户消费了50元,此时用户余额是150,但是如果用户退卡,那么退款只能退50。
这样的逻辑就是业务逻辑。
至于表里面怎么查询和存储这个余额,怎么更新,就是数据访问。
业务逻辑是向用户提供操作接口,数据层是负责提供数据的,负责向数据库读写数据
比如登录
DLL逻辑层 提供了登录的方法,做的是登录后出现情况的处理,可由UI层来调用DLL的登录
public class UserDll:
public void Login(string name,string pwd)
{
User user = DAL.UserDal.GetUserData(name); //登录需要数据验证吧交给数据层ok
if(user!=null)
switch(user.Login(pwd))
{
case 0: 密码错误怎么办
case 1: 正确怎么办
default:break;
}
else
用户不存在
}
DAL数据层 提供获取数据的方法,只是单纯的向外提供数据,负责跟数据库打交道
class UserDal:
Public User GetUserData(string name)
{
SqlConnection con = SqlConnectionPool.GetOneConnection(); //从连接池拿到一个数据库连接
var url='' select * from user where name=''+name+''; //var 会具体到数据的实际类型,表示任一类型
var data = con.Execute(url).getData(0); //执行查询获得数据,具体要进行异常捕获和看你怎么弄的了,这里简单表示了
if(data!=null)
return new User(data); //数据模型User类提供使用data构造方法
else
return null; //如果date得到了查询结果的引用不为null就不会为null
}
关于User的实现
public class User
{
var name;
var pwd;
public User(var data) //看情况是否需要重载来保留原构造
{
name=data.name;
pwd=data.pwd;
}
public int Login(string pwd)
{
if(!pwd.Equals(pwd))
return 0;
else
return 1;
}
}
只是简单示列不作为可执行代码,具体还看你的实际情况,提供的只是一个思路
如果你喜欢编程,那就看我的博文,三层架构在功能上以及意义上,都不是楼上讲的那样肤浅。而且三层架构在绝大多数人的使用中,都从形式上摒弃了模型的作用,如果是刚做开发,一定要走正确道路
数据访问层,,,很好理解吧,,dao层,也可以叫持久层
(数据库内容跟存到文件里一样,不像代码中变量程序关了变量内容就没了,所以叫持久层)
数据库访问层主要就是和数据库打交道,说白了就是【增删改查数据库】
业务逻辑层,,service层,不是必须,,有些逻辑复杂的会加上service层
几个例子,,最近做的同学做的“在线大数计算器”
【1】通过视图层访问到控制层,
【2】由于是不是一两句代码能够完成的计算,所以需要加一个业务逻辑层,计算出结果返回到控制层。(如果计算int+int,直接控制层就返回了)
界面层,,view层,,
这有段历史“曾经jsp刚出来的时候,页面里可以写脚本,很方便,,,但是人们发现,页面变的越来越复杂,,不容易维护,,所以分成两层”
view层和业务逻辑层,这两层数据传输就是Model,,【MVC】
view主要负责显示,
分层只是抽象形式,,具体也会是根据需求而定,,不是必须