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

张扬网站建设结构优化

张扬网站建设,结构优化,wordpress 嵌套插件,1688货源批发网一、 为什么是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.yidumall.com/news/90691.html

相关文章:

  • 网站建设的具体过程网络营销技能大赛优秀作品
  • 镇江建设网站吉林网络推广公司
  • 1688购物平台seo搜索优化软件
  • 馀姚网站建设google优化师
  • 影视网站wordpress关键词排名批量查询
  • 仙女棒在线设计平台南宁seo教程
  • 南昌网站推广公司百度竞价点击价格公式
  • 外管局网站怎么做报告搜索引擎哪个最好用
  • 买个网站服务器多少钱公司想做个网站怎么办
  • 繁体企业网站源码专业seo网站
  • 西安做网站的公司维护济南seo
  • wordpress countdown timer赣州seo公司
  • 做网站要什么资料抖音流量推广神器软件
  • wordpress中文菜单如何优化关键词搜索排名
  • 杭州企业网站建设 哪里好四年级说新闻2023
  • 深圳电商网站开发公司百度点击快速排名
  • 上海网络广告推广平台seo技术培训广东
  • 新西兰网站开发专业信息流广告投放渠道
  • 曲靖做网站公司百度竞价排名怎么做
  • 东莞专业网站建设查询网站注册信息
  • 网站seo的关键词排名怎么做的给你一个网站怎么优化
  • 有什么学做木工的网站吗营销策划方案怎么做
  • 滁州建设厅网站2021年年度关键词排名
  • win2008系统做网站武汉seo优化分析
  • java 现代网站开发企业网站的域名是该企业的
  • wordpress slider使用东莞seo建站投放
  • 哪些网站可以做pptseo教育培训机构
  • 沈阳做网站好的seo排名快速上升
  • 编辑wordpress模板郑州seo外包服务
  • 甘肃 政府 网站建设seo网站排名