当前位置: 首页 > news >正文

扬州网站建设link5广州搜索排名优化

扬州网站建设link5,广州搜索排名优化,电商平台有哪些软件,如何利用互联网挣钱一、 为什么是Spring? 在正式进入Spring内容前我们先看看我们以往经典的程序设计。 当我们去登录时,会调用后端的Controller,Controller接收到用户的请求后会调用业务层的Service进行登录的业务处理,Service业务处理过程中会调用Dao层向DB获取数进行判断。 接下来我们用代…

一、 为什么是Spring?

在正式进入Spring内容前我们先看看我们以往经典的程序设计。

当我们去登录时,会调用后端的Controller,Controller接收到用户的请求后会调用业务层的Service进行登录的业务处理,Service业务处理过程中会调用Dao层向DB获取数进行判断。

接下来我们用代码来模拟实现这个逻辑

Controller中,我们需要有一个方法来接收用户发起的请求

public class UserController {private UserService userService = new UserServiceImpl();// 登录public void login() {String username = "admin";String password = "123456";boolean success = userService.login(username, password);System.out.println(success ? "登录成功" : "登录失败");}
}

Service中要进行用户校验的业务逻辑处理,定义Service接口以及实现类

public interface UserService {boolean login(String username, String password);
}
public class UserServiceImpl implements UserService {private UserDao userDao = new UserDaoImplForMySQL();@Overridepublic boolean login(String username, String password) {User user = userDao.findUserByUsernameAndPassword(username, password);return user != null;}
}

Dao中我们要使用用户传过来的用户名和密码去数据库查询是否存在,定义Dao接口及实现类

public interface UserDao {User findUserByUsernameAndPassword(String username, String password);
}
public class UserDaoImplMySQL implements UserDao {@Overridepublic User findUserByUsernameAndPassword(String username, String password) {// 省略具体的实现过程...return null;}
}

看上去这个模拟的实现没有什么问题,但是有一天项目组说我们现在数据从MySQL迁移到了Oracel,怎么办??你得考虑它用户数据未来还会不会迁移回来呢!

所以此时我们就会对于Dao的实现再加一个

// 使用Oracle数据库实现UserDao
public class UserDaoImplForOracle implements UserDao {@Overridepublic User findUserByUsernameAndPassword(String username, String password) {// 省略具体实现过程...return null;}
}

不同的数据库实现有不同的处理方式,感觉逻辑正常,但是这时我们还得要反回去修改Service的实现,让它引用的是新的Dao实现。

public class UserServiceImpl implements UserService {// private UserDao userDao = new UserDaoImpl();private UserDao userDao = new UserDaoImplForOracle();    @Overridepublic boolean login(String username, String password) {User user = userDao.findUserByUsernameAndPassword(username, password);return user != null;}
}

以上的这个设计好吗?实际是不好的,因为每次底层的变化都会要求上层进行代码的变更,其实这里违背软件开发中的开闭原则!

什么是开闭原则?

在软件开发过程中应对扩展开放,对修改关闭。也就是说,如果进行功能扩展时,添加额外的类是没有问题的,但是如果因为功能扩展而修改之前运行正常的程序,这时忌讳,是不被允许的。

从上图可以看出,上层是依赖下层的。UserController依赖UserServiceImpl,则UserServiceImpl依赖UserDaoImplForMySQL,这样就会导致一旦下层的改动,上层必然受到影响也需要进行改动,这也同时违背了另一个开发原则:依赖倒置原则  

什么是依赖倒置原则?

依赖倒置原则,简称DIP,主要倡导的是面向抽象编程、面向接口编程,不要面向具体编程,让上层不再依赖下层,这样的话下面改动了,上面代码也不会受到牵连。这可以大大地降低程序的耦合度,耦合度低了扩展性就强了,同时代码的复用性也会增强。

在前面

http://www.shuangfujiaoyu.com/news/1715.html

相关文章:

  • 连云港网站建设开发沈阳网站seo排名公司
  • 站长之家seo查找广州seo运营
  • 郑州做网站公司 卓美seo搜索引擎官网
  • wordpress 双语最新黑帽seo教程
  • 自己做外贸网站中央新闻
  • 电商网站建设情况汇报百度seo如何快速排名
  • 榆次小学网站建设要做网络推广
  • 个体工商户备案网站备案百度seo服务
  • wordpress 火车头 教程正安县网站seo优化排名
  • 杭州市建设住房保障局网站网络营销的工具和方法
  • 找网络公司做的网站到期后 备案的域名属于备案企业还是网络公司hao123影视
  • 商城做网站百度关键词刷搜索量
  • wordpress主题可以更改主页布局seo 重庆
  • 网站建设对企业的作用web设计一个简单网页
  • 云系统网站建设合同全网营销的公司
  • 电脑怎样重新安装wordpressseo网站推广招聘
  • 网站 概念设计百度一下京东
  • 硬件开发入门成都网站快速优化排名
  • 政府网站中企动力技术支持编程培训机构排名前十
  • 自己做刷东西的网站网络营销推广难做吗
  • 做网站 工资高吗专业seo整站优化
  • 本地网站建设多少钱外贸平台排行榜前十名
  • 昆明做网站费用武汉seo工厂
  • 帮别人做诈骗网站吗网络推广平台有哪些?
  • 湖北工程信息网深圳网站优化
  • 网易企业邮箱pop和smtp广州seo做得比较好的公司
  • 长沙房地产管理局整站优化的公司
  • 一 网站建设管理基本情况中国营销传播网
  • 富阳网站建设价格小红书sem是什么意思
  • 产品发布网站搜什么关键词能找到网站