我最近了解到,在
Python 3中,为了最小化类的访问器方法的数量,您可以使用字典基本上只有一组访问器方法,如下所示:
def __init__(self,**kwargs): self.properties = kwargs def get_properties(self): return self.properties def get_property(self,key): return self.properties.get(key,None)
这似乎非常有用,我想在Java中应用类似的东西.我一直在研究可能具有多个属性的应用程序,创建和跟踪所有访问器方法可能很痛苦.是否有类似的策略我可以用于Java?
解决方法
如果它适合并且它最适合使用该模式,但它确实应该是Java规则的一个例外 – 它可能不合适.
Java中的最佳实践是为每个变量使用getter和setter方法.是的,这是更多的代码 – 所以 – 如果你的懒惰让你的IDE自动生成它们.这是有充分理由的.很多好理由.有些是;
>促进私人变量
>定义其他类的外部接口,允许类控制设置或获取变量的内容和方式
>通过建立处理对象变量的标准方法来促进良好的编码实践
通过移植此模式,您将遇到的问题是打字. Python是动态类型的,Java是静态类型的.因此,为了在Java中使用相同的模式,您必须将值存储在类似字符串/对象数组的内容中,然后将它们作为对象或String返回.那么你以后必须转换它们.也许如果你的’属性’都是字符串,那就没关系.该规则有例外,但您需要了解所有规则才能打破它们.如果它们是不同的类型(String,int,CustomObject等),请不要使用在Python中使用的相同模式.