何时包装对象字段的方法或传递对象本身?

时间:2016-12-08 10:43:37

标签: java wrapper encapsulation getter-setter coding-style

如果类Foo有一个hashmap,即:

public class Foo {

    private HashMap <String, Integer> fooMap;

    //other foo methods

}

当封装fooMap时,fooMap应该将其方法包装起来的情况如下所示:

public class Foo {

    private HashMap<String, Integer> fooMap;

    //other foo methods

    public int getFoo(String s) {

        return fooMap.get(s);

    }

    //other wrapper methods

}

或让fooMap自行返回:

public class Foo {

    private HashMap<String, Integer> fooMap;

    //other foo methods

    public HashMap<String, Integer>  getFooMap() {

        return fooMap;

    }

}

1 个答案:

答案 0 :(得分:0)

一般来说暴露你的字段是一个坏主意,我建议你返回map()的副本而不是真正的引用。随着你的代码的增长,你不能总是遵循流程可以采取的其他一些路径对象可能会将您的Foo对象映射传递给其他将添加值的对象,并且需要几天的时间才能了解出错的地方。以下是我在此主题http://javarevisited.blogspot.co.il/2012/03/private-in-java-why-should-you-always.htmlWhy encapsulation is an important feature of OOP languages?

上找到的一些链接