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

用网站做的简历口碑营销案例

用网站做的简历,口碑营销案例,wordpress %3c 3.6.1,wordpress在线上传头像目录 前言 一、示例程序 二、OCP开闭原则 三、依赖倒置原则DIP 四、控制反转IOC 总结 前言 在软件开发的世界里,随着项目的增长和需求的变化,如何保持代码的灵活性、可维护性和扩展性成为了每个开发者必须面对的问题。传统的面向过程或基于类的设计…

目录

前言

一、示例程序

二、OCP开闭原则

三、依赖倒置原则DIP

四、控制反转IOC

总结


前言

  在软件开发的世界里,随着项目的增长和需求的变化,如何保持代码的灵活性、可维护性和扩展性成为了每个开发者必须面对的问题。传统的面向过程或基于类的设计往往导致代码高度耦合,使得任何小的改动都需要对整个系统进行大规模的测试和调整。这不仅耗费时间,也增加了出错的风险。因此,理解并应用一些基本的设计原则,如开闭原则(OCP)和依赖倒置原则(DIP),对于构建高效、灵活的应用程序至关重要。本文将通过一个简单的用户登录示例,探讨如何从传统设计模式过渡到使用Spring框架实现控制反转(IoC)来解决这些问题,帮助开发者更好地理解和实践这些重要的编程理念。

一、示例程序

  当没有Spring时,我们是怎么开发的呢?我们先阅读下面的程序:

// 控制层
public class UserController {private UserService userService = new UserServiceImpl();public void login(){String username = "admin";String password = "123456";boolean success = userService.login(username, password);if (success) {// 登录成功} else {// 登录失败}}
}// 业务层
public class UserServiceImpl implements UserService {private UserDao userDao = new UserDaoImplForMySQL();public boolean login(String username, String password) {User user = userDao.selectByUsernameAndPassword(username, password);if (user != null) {return true;}return false;}
}// 数据库层
public class UserDaoImplForMySQL implements UserDao {public User selectByUsernameAndPassword(String username, String password) {// 连接MySQL数据库,根据用户名和密码查询用户信息return null;}
}

  可以看出,UserDaoImplForMySQL中主要是连接MySQL数据库进行操作。如果更换到Oracle数据库上,则需要再提供一个UserDaoImplForOracle。很明显,以上的操作正在进行功能的扩展,添加了一个新的类UserDaoImplForOracle来应付数据库的变化,这里的变化会引起连锁反应吗?当然会,如果想要切换到Oracle数据库上,UserServiceImpl类代码就需要修改。

二、OCP开闭原则

  上面的代码以及修改违背了OCP开闭原则,开闭原则是这样说的:在软件开发过程中应当对扩展开放,对修改关闭。也就是说,如果在进行功能扩展的时候,添加额外的类是没问题的,但因为功能扩展而修改之前运行正常的程序,这是忌讳的,不被允许的。因为一旦修改之前运行正常的程序,就会导致项目整体要进行全方位的重新测试。这是相当麻烦的过程。导致以上问题的主要原因是:代码和代码之间的耦合度太高。如下图所示:

 更多软件设计原则:【设计模式】软件设计原则-CSDN博客

  可以很明显的看出,上层是依赖下层的。UserController依赖UserServiceImpl,而UserServiceImpl依赖UserDaoImplForMySQL,这样就会导致下面只要改动上面必然会受牵连(跟着也会改),所谓牵一发而动全身。这样也就同时违背了另一个开发原则:依赖倒置原则。 

三、依赖倒置原则DIP

  依赖倒置原则(Dependence Inversion Principle),简称DIP,主要倡导面向抽象编程,面向接口编程,不要面向具体编程,让上层不再依赖下层,下面改动了,上面的代码不会受到牵连。这样可以大大降低程序的耦合度,耦合度低了,扩展力就强了,同时代码复用性也会增强(软件七大开发原则都是在为解耦合服务)。你可能会说,上面的代码已经面向接口编程了呀:

  确实已经面向接口编程了,但对象的创建是:new UserDaoImplForOracle()显然并没有完全面向接口编程,还是使用到了具体的接口实现类。什么叫做完全面向接口编程?请看以下代码:

  如果代码是这样编写的,才算是完全面向接口编程。那你可能会问,这样userDao是null,在执行的时候就会出现空指针异常呀。你说的有道理,确实是这样的,所以我们要解决这个问题。解决空指针异常的问题,其实就是解决两个核心的问题: 

  1. 谁来负责对象的创建。【也就是说谁来:new UserDaoImplForOracle()/new UserDaoImplForMySQL()】
  2. 谁来负责把创建的对象赋到这个属性上。【也就是说谁来把上面创建的对象赋给userDao属性】

  如果我们把以上两个核心问题解决了,就可以做到既符合OCP开闭原则,又符合依赖倒置原则。很荣幸的通知你:Spring框架可以做到。在Spring框架中,它可以帮助我们new对象,并且它还可以将new出来的对象赋到属性上。换句话说,Spring框架可以帮助我们创建对象,并且可以帮助我们维护对象和对象之间的关系。比如:

  Spring可以new出来UserDaoImplForMySQL对象,也可以new出来UserDaoImplForOracle对象,并且还可以让new出来的dao对象和service对象产生关系(产生关系其实本质上就是给属性赋值)。很显然,这种方式是将对象的创建权/管理权交出去了,不再使用硬编码的方式了。同时也把对象关系的管理权交出去了,也不再使用硬编码的方式了。像这种把对象的创建权交出去,把对象关系的管理权交出去,被称为控制反转。

四、控制反转IOC

  控制反转(Inversion of Control,缩写为IoC),是面向对象编程中的一种设计思想,可以用来降低代码之间的耦合度,符合依赖倒置原则。控制反转的核心是:将对象的创建权交出去,将对象和对象之间关系的管理权交出去,由第三方容器来负责创建与维护。控制反转常见的实现方式:依赖注入(Dependency Injection,简称DI)。通常,依赖注入的实现又包括两种方式:

  • set方法注入
  • 构造方法注入

  Spring框架就是一个实现了IoC思想的框架。IoC可以认为是一种全新的设计模式,但是理论和时间成熟相对较晚,并没有包含在GoF中(GoF指的是23种设计模式)。

总结

  通过对一个简单用户登录系统的分析,我们了解到了在没有采用现代框架时开发可能面临的挑战:高耦合度的代码难以维护和扩展。遵循开闭原则(OCP)和依赖倒置原则(DIP),可以有效地降低这种耦合,提高代码的复用性和可扩展性。然而,手动管理对象创建和依赖关系仍然复杂且容易出错。Spring框架通过引入控制反转(IoC)概念,提供了一种优雅的解决方案。它不仅简化了对象的创建和依赖注入过程,还促进了更清晰、模块化的代码结构,极大地提升了开发效率和软件质量。掌握这些设计原则与技术框架的应用,可以帮助开发者构建更加健壮、灵活和易于维护的软件系统。

http://www.hkea.cn/news/663508/

相关文章:

  • 政府网站建设及管理规范各大搜索引擎入口
  • poedit pro wordpress免费网站推广优化
  • 市场营销产品推广策划方案seo合作代理
  • 东莞专业网站建设推广搜索引擎网络排名
  • 服务器做网站用什么环境好销售营销方案100例
  • 如何做DJ网站英文seo外链
  • 网站统计源码下载百度推广的步骤
  • 本地网站建设seo推广的方法
  • 东莞好的网站建设效果seo和sem分别是什么
  • 最新版wordpress背景手机网络优化软件
  • 丛台企业做网站推广免费建一级域名网站
  • 集宁网站建设免费网站推广网站破解版
  • 网站建设域名的购买有域名和服务器怎么建网站
  • 深圳有什么网站长沙百度seo
  • 台州企业网站模板建站怎么在百度上做公司网页
  • 烟台网站建设联系企汇互联专业网站维护收费标准
  • 网络客户服务平台搜索优化推广公司
  • 建设网站技术方案线上教育培训机构十大排名
  • 沈阳人流seo优化师就业前景
  • 开发区网站制作公司seo关键词有话要多少钱
  • 网站被篡改处理app拉新平台
  • 在线房屋设计网站seo推广平台服务
  • 电子政务门户网站建设代码短链接生成网址
  • 崔各庄地区网站建设百度非企渠道开户
  • 怎么用自己的电脑做网站服务器产品推广平台排行榜
  • 中国做的比较好的电商网站有哪些哈市今日头条最新
  • 微信怎么做网站推广百度网站优化培训
  • 网站开发支持多个币种电子技术培训机构
  • 移动网站设计与制作怎么找关键词
  • 国内移动端网站做的最好的厦门人才网597人才网