相关疑难解决方法(0)

为什么getter和setter方法在java中很重要?

我被教导要经常使用吸气剂和固定剂.但是,我不知道这些方法的优缺点,因为通过实现它们,我们暴露数据并隐藏它.

我对此有点困惑.任何人都可以就我们使用吸气剂/定位器的原因给出一些正确的建议,以及它们的优点是什么?

java methods getter-setter

35
推荐指数
3
解决办法
5万
查看次数

吸气剂有副作用

我创建了一个类,其对象使用一堆XML代码进行初始化.该类能够从该XML中提取各种参数,并将它们缓存在对象状态变量中.这些参数的潜在数量很大,很可能用户不需要大部分参数.这就是我决定执行"懒惰"初始化的原因.

在下面的测试用例中,这样的参数是title.当用户第一次尝试访问它时,getter函数会解析XML,正确初始化状态变量并返回其值:

class MyClass(object):     
    def __init__(self, xml=None):
        self.xml  = xml
        self.title = None

    def get_title(self):
        if self.__title is None:
            self.__title = self.__title_from_xml()
        return self.__title

    def set_title(self, value):
        self.__title = value

    title = property(get_title, set_title, None, "Citation title")

    def __title_from_xml(self):
        #parse the XML and return the title
        return title         
Run Code Online (Sandbox Code Playgroud)

这看起来不错,对我来说很好.但是,由于getter函数实际上是一个"setter",因为它对对象有非常显着的副作用,我对此感到不安.这是一个合理的担忧吗?如果是这样,我该如何解决?

python design-patterns for-loop side-effects getter-setter

13
推荐指数
2
解决办法
992
查看次数

当我们有访问器和mutator时,为什么要声明私有字段?

如果我用Java创建一个类,我总是被告知惯例是使一个类的所有字段都是私有的.如果我需要访问或更改它们,我可以创建一个accessor和mutator方法.我确实理解私有变量的重要性,因为它们有助于降低复杂性并允许封装.

我不明白的是,如果我创建一个公共访问者和mutator方法,那么那个变量是不是公共?为什么在任何人都可以访问私有变量的情况下仍然使用私有变量?

我还应该注意,我理解这些方法的重要性,但我想知道为什么我们懒得将变量设为私有,即使我们通过这些方法让任何人都可以访问它?

java oop access-modifiers

3
推荐指数
1
解决办法
2834
查看次数