加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

oop – 创建类时还需要运行时值的依赖注入?

发布时间:2020-12-14 00:51:40 所属栏目:百科 来源:网络整理
导读:假设您在Value对象和Services对象中划分系统(如“面向对象的软件增长,测试指导”中所述.Misko Hevery称这些为“newables”和“injectables”. 当您的一个值对象突然需要访问服务来实现它的方法时会发生什么? 假设你有一个很好的简单Value对象.它是不可变的,
假设您在Value对象和Services对象中划分系统(如“面向对象的软件增长,测试指导”中所述.Misko Hevery称这些为“newables”和“injectables”.

当您的一个值对象突然需要访问服务来实现它的方法时会发生什么?

假设你有一个很好的简单Value对象.它是不可变的,包含一些信息,就是它.假设我们使用类似这样的东西:

CreditCard card = new CreditCard("4111-1111-1111-1111","07/10");
if (card.isValid())
{
  // do stuff
} 
else
{
  // don't do stuff
}

到现在为止还挺好. isValid()在卡号上实现校验位算法并返回true / false.

现在,假设我想通过验证当前时间的到期日来增强系统.如何在不破坏Value对象/服务对象paradim的情况下完成此操作?我希望这个课程能够继续进行单元测试.

> CreditCard现在有一个依赖项,但由于它的创建方式,它无法注入,因此依赖注入已经完成.
> CreditCard类不应该呼唤Singletons(我认为全局访问Singleton是不好的做法)
>将行为置于CreditCardVerificationService.validateCard()上意味着必须重新访问所有现有代码. isValid()的实现正在泄漏.

我知道有一些事情可以解决这个问题,但最干净的方法是什么?

我认为验证任何东西都不是CreditCard对象的工作.工厂将验证校验位以确保它实例化符合要求的卡,而验证服务将验证卡是否到期/ $limit.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读