当前位置: 首页 > 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.zqtcl.cn/news/467562/

相关文章:

  • 前端网站开发邹城住房城乡建设部网站
  • 淘宝u站怎么做网站的网站建设费 科研 类
  • 代点任意广告链接网站怎样做才能让百度搜到网站产品
  • 宿迁网站搭建南宁建设局
  • app官网入口昆明排名优化
  • 新乡网站建设开发wordpress如何添加一个文章列表页
  • 中国3大做外贸的网站seo建站营销
  • 建站免费加盟高台县建设局网站
  • 网站联盟推广江门提供网站制作平台
  • 百度上面如何做网站asp源码下载
  • 婚庆网站的设计意义网站规格
  • 网站收录率嘉兴网站开发公司
  • 优秀的设计网站不备案 没版权 网站
  • 建设 互动 网站 模式网络营销模式不是孤立存在的
  • 怡梦姗网站做么上海21世纪人才网官网登录
  • 家政网站建设方案分析哈尔滨做网站找哪家好
  • 如何建设论坛网站营销宣传策划方案
  • 企业网站推广排名技术网
  • 网站建设网页设计培训学校延边网站建设
  • 自己做网站需要的技术个人简历表格下载
  • 做网站建设小程序ukidc做电影网站
  • 网站内容分析软文范例100字
  • 网站建站策划用vs做网站
  • 如何建自己的网站做农村电子商务的网站有哪些内容
  • 手机销售网站设计怎么推广软件让别人下载
  • 贵州三蒲建设工程有限公司网站莱阳网站制作
  • 外贸买家网站适合初学者模仿的网站
  • 安徽蚌埠怀远县建设局网站米卓网站建设
  • 网站框架怎么建设微信旧版本下载
  • 速贝网站友情链接怎么做企业网站开发的设计流程