1.web框架中的controller、service层、dao层、logic层的联系与作用啊
dao层只是负责和数据库打交道,
controller层只是负责从service层获得数据,发送到相应的视图,核心业务逻辑在service层。
在service层写业务逻辑代码的时候要注意,将每一个独立的功能写成一个单独的方法,方便其他的代码进行调用。
例子:现在有个PC注册账号的功能
1:初始阶段,controller收到请求,直接在controler里面写数据库连接,进行增删改查,没毛病,可以运行。
2:慢慢发展,功能多了,Controller多起来了,contoller到处都是sql和数据库打交道的代码,虽然不影响运行,但是有时候发现,如果我要修改一个数据表的字段或其他东西,得到好几个Controller里面去找相同的一个代码并修改,太麻烦了,干脆都放到一个里面,全部对增删改查从同一个地方多好,这时候出现了dao层。
3:继续发展,进军移动端,有了手机注册的功能,简单,写呗,写着写着发现,我去,怎么和PC注册功能这么像?都要校验用户信息->判断数据库有无重复->插入数据库(重复的业务功能在几个控制器都要被重复使用),有了第二步的经验,把这些相同的业务操作抽离放到一起呗,出现了logic层(logic层负责做些处理并调用dao层完成数据的入库等和数据库打交道的事情),RegisterLogic,规定所有的注册功能都走这一个逻辑了,维护更加方便了,以后即使增加一百种注册方式,只要 new RegisterLogic()->register();就行了。
4:继续发展下去,公司有声有色的,老板说,网站太无聊了,加点天气预报,随机推送笑话的附属功能吧,这行功能不属于自己的系统的业务逻辑,更具第二步和第三步的经验,应该单独放一个地方,没准以后其他的地方会用到,这时候service层就出现了。
の代码性能优化
1、尽量重用对象
特别是String对象的使用,出现字符串连接时应该使用StringBuilder/StringBuffer代替。由于Java虚拟机不仅要花时间生成对象,以后可能还需要花时间对这些对象进行垃圾回收和处理,因此,生成过多的对象将会给程序的性能带来很大的影响。
2、尽量减少对变量的重复计算
明确一个概念,对方法的调用,即使方法中只有一句语句,也是有消耗的,包括创建栈帧、调用方法时保护现场、调用方法完毕时恢复现场等。所以例如下面的操作:
for (int i = 0; i < list.size(); i++)
{...}
//应该替换为
for (int i = 0, length = list.size(); i < length; i++)
{...}
3、尽量采用懒加载的策略,即在需要的时候才创建
String str = "aaa";
if (i == 1)
{
list.add(str);
}
//应该替换为
if (i == 1)
{
String str = "aaa";
list.add(str);
}