java bean 工厂模式_java – 工厂模式:创建bean时验证输入(Guice / Guava)

如果构造具有特定foo值的BeanImpl无效,则在构造函数中抛出IllegalArgumentException,详细说明错误.

public class BeanImpl {

...

public BeanImpl(Object param) {

if (param == null) {

throw new IllegalArgumentException("Param cannot be null");

}

foo = param;

}

...

}

从对象的早期定义是“状态和行为组合”,这强制您不会污染具有无效状态的对象.

就工厂而言,在构造对象之前检查值是一种方便,但工厂的真正职责并没有扩展到对象的责任.工厂模式有利于确保Object以有意义的方式与其他对象相对应,但它不应该执行Object确保Object的内部状态正确的工作.

让一个Object(工厂)确保另一个Object的状态正确是错误的行为.您将行为(验证状态)放在Factory中,但状态在Object中.结果,您现在拥有了应该紧密耦合的分散连接代码.这意味着现在你必须有一个Factory来创建一个Object,而不是让Factory在有意义的时候创建一个对象,而在没有它时直接创建Object.

这经常出现在单元测试中.如果您没有将验证码放在工厂中,您可以单独对对象进行单元测试;测试不良参数.但是,如果你将验证码放在工厂中,你将无法在没有工厂的情况下构造“有效”对象,这是你得到的第一个提示,你不自然地耦合了两个不应紧密耦合在一起的对象.

当然,也有例外;但是当人们期望数据是正确的时,它们往往会出现,但收集数据的方式并没有提供验证.例如,从网络套接字收集的结构化记录实际上可能具有概念上不符合内部一致性的数据;但是,由于处理的性质,处理,记录和丢弃无效输入.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值