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

行业 专业 网站建设宜宾做网站的公司

行业 专业 网站建设,宜宾做网站的公司,专业的集团网站开发费用多少钱,想找一家公司设计网站最近#xff0c;我们公司开始开发基于Java的新Web应用程序#xff0c;经过一些评估过程#xff0c;我们决定使用Spring。 但是许多团队成员并不了解Spring和Dependency Injection的原理。 因此#xff0c;我被要求给出一个速成班#xff0c;介绍什么是Spring上的依赖注入和… 最近我们公司开始开发基于Java的新Web应用程序经过一些评估过程我们决定使用Spring。 但是许多团队成员并不了解Spring和Dependency Injection的原理。 因此我被要求给出一个速成班介绍什么是Spring上的依赖注入和基础知识。 我没有讲所有有关IOC / DI的理论而是想举例说明。 要求我们将获得一些客户地址并且需要验证该地址。 经过一番评估我们考虑使用Google地址验证服务。 传统不良方法 只需创建一个AddressVerificationService类并实现逻辑即可。 假设GoogleAddressVerificationService是Google提供的一项服务该服务将Address作为字符串并返回经度/纬度。 class AddressVerificationService {public String validateAddress(String address){GoogleAddressVerificationService gavs new GoogleAddressVerificationService();String result gavs.validateAddress(address); return result;} } 这种方法的问题 1.如果要更改地址验证服务提供商则需要更改逻辑。 2.您不能使用某些虚拟AddressVerificationService进行单元测试使用模拟对象 由于某些原因客户要求我们支持多个AddressVerificationService Providers因此我们需要确定在运行时使用哪种服务。 为了适应这一点您可能会想到更改以下类 class AddressVerificationService { //This method validates the given address and return longitude/latitude details.public String validateAddress(String address){String result null;int serviceCode 2; // read this code value from a config fileif(serviceCode 1){GoogleAddressVerificationService googleAVS new GoogleAddressVerificationService();result googleAVS.validateAddress(address);} else if(serviceCode 2){YahooAddressVerificationService yahooAVS new YahooAddressVerificationService();result yahooAVS.validateAddress(address);}return result;} } 这种方法的问题   1.每当您需要支持新的服务提供商时都需要使用if-else-if添加/更改逻辑。 2.您不能使用某些虚拟AddressVerificationService进行单元测试使用模拟对象 IOC / DI方法 在上述方法中AddressVerificationService负责控制其依赖项的创建。 因此只要其依赖项发生更改AddressVerificationService就会更改。 现在让我们使用IOC / DI模式重写AddressVerificationService。 class AddressVerificationService{private AddressVerificationServiceProvider serviceProvider;public AddressVerificationService(AddressVerificationServiceProvider serviceProvider) {this.serviceProvider serviceProvider;}public String validateAddress(String address){return this.serviceProvider.validateAddress(address);}}interface AddressVerificationServiceProvider{public String validateAddress(String address);} 在这里我们注入了AddressVerificationService依赖项AddressVerificationServiceProvider。 现在让我们使用多个提供程序服务来实现AddressVerificationServiceProvider。 class YahooAVS implements AddressVerificationServiceProvider{Overridepublic String validateAddress(String address) {System.out.println(Verifying address using YAHOO AddressVerificationService);return yahooAVSAPI.validate(address);} }class GoogleAVS implements AddressVerificationServiceProvider{Overridepublic String validateAddress(String address) {System.out.println(Verifying address using Google AddressVerificationService);return googleAVSAPI.validate(address);}} 现在客户可以选择使用哪个服务提供商的服务如下所示 AddressVerificationService verificationService null;AddressVerificationServiceProvider provider null;provider new YahooAVS();//to use YAHOO AVSprovider new GoogleAVS();//to use Google AVSverificationService new AddressVerificationService(provider);String lnl verificationService.validateAddress(HitechCity, Hyderabad);System.out.println(lnl); 对于单元测试我们可以实现一个Mock AddressVerificationServiceProvider。 class MockAVS implements AddressVerificationServiceProvider{Overridepublic String validateAddress(String address) {System.out.println(Verifying address using MOCK AddressVerificationService);return responselongitude123/longitudelatitude4567/latitude;}}AddressVerificationServiceProvider provider null;provider new MockAVS();//to use MOCK AVS AddressVerificationServiceIOC verificationService new AddressVerificationServiceIOC(provider);String lnl verificationService.validateAddress(Somajiguda, Hyderabad);System.out.println(lnl); 通过这种方法我们可以解决上述基于非IOC / DI的方法的问题。 1.我们可以根据需要提供尽可能多的商品。 只需实现AddressVerificationServiceProvider并将其注入即可。 2.我们可以使用模拟实现使用虚拟数据进行单元测试。 因此通过遵循“依赖注入”原理我们可以创建基于接口的松散耦合且易于测试的服务。 参考 我是如何通过JCG合作伙伴 Siva Reddy在“ 我的技术实验”博客上 向我的团队解释依赖注入的 。 翻译自: https://www.javacodegeeks.com/2012/06/how-i-explained-dependency-injection-to.html
http://www.huolong8.cn/news/206042/

相关文章:

  • 部门网站建设和维护iis默认网站 没有属性
  • 网站制作软件手机版下载如何学网站建设
  • 苏州做网站设计的公司为什么无法卸载wordpress
  • 上海短视频seo优化网站河北正规网站建设比较
  • 移动端网站开发最好的环境wordpress get_row
  • 上上上海网站设计网站首页设计分析
  • 网站开发合同宁波网站优化公司软件
  • 新开传奇网站3000okpython入门基础教程
  • 网站建设中英语上海建筑网站建设
  • 软件网站模板八年级微机网站怎么做
  • 网站域名注册多少钱设计制作小车
  • 中企动力科技股份有限公司合肥分公司电影网站如何做seo
  • 网站优化免费软件网页搜索优化seo
  • 西部数码网站模板如何设置wordpress静态页面
  • 目前小说网站排名微信视频制作小程序
  • 湖南建设资质申请网站宁波网站建设销售
  • h5网站建设代理苏州网站建设公司鹅鹅鹅
  • 全国设计网站公司wordpress 头像地址
  • 备案网站制作wordpress订阅关闭
  • 精品课程建设网站怎么给网站做短信
  • 网站建设用阿里还是华为云wordpress主题cms博客
  • 新手站长做装修网站如何开发一个软件
  • 网站建设目标规划淘宝客如何建设自己的网站
  • wordpress 多语言 站点头像在线制作网站
  • 不会写代码怎样做网站网站如何做视频链接
  • 广州酒店网站制作网站建设先进材料
  • 家庭宽带做网站无锡专业网站营销
  • 益阳建设网站wordpress市场
  • 建设银行企业网站打不开建设常规的网站报价是多少
  • 建站哪个网站比较好免费seo网站诊断免费