BitmapFactory.Options中没有封装

问题描述 投票:0回答:1

在学习Android的BitmapFactory.Options课程时,我注意到它的字段可以公开访问和修改。

这与声明字段应声明为private的一般封装规则相反,并且应通过public getter / setter方法实现访问/修改它们。这样我们就可以控制客户如何接近我们班级的领域。

这让我想知道我是否误解了封装概念。在编写我自己的类时,在哪种情况下我可以忽略封装,就像它在BitmapFactory.Options中被忽略一样?


有人可能会争辩说,在获取/设置字段值时不需要限制时不需要封装。但我认为BitmapFactory.Options不是这种情况,因为例如BitmapFactory.Options.inSampleSize应该是2的幂:

解码器使用基于2的幂的最终值,任何其他值将向下舍入到最接近的2的幂。

因此,开发人员可以声明一个setter方法

  • 拒绝不是2的幂的值;要么
  • 在将给定值传递给解码器之前,将给定值舍入到最接近的2的幂。
java android encapsulation
1个回答
1
投票

Javadoc对inSampleSize所说的是

此外,2的幂通常更快/更容易让解码器兑现。

这意味着class作者委托您决定分配给它的值。 没有任何地方说明其他价值观是行不通的,只是因为四舍五入阶段它们不会那么有效。可能存在必须分配非二次幂数的用例。

通过查看内部static class,我认为没有理由使用getter / setter封装。 它们是不必要的和多余的,就像许多“尊重”JavaBean风格的类一样。

为什么有一个500 NLOC级别,当你可以有一个50 NLOC一个?把事情简单化。

© www.soinside.com 2019 - 2024. All rights reserved.