关于单例模式和静态方法的问题,还有一个关于封装的问题。

夏目恋石 发布于 2015/02/07 16:44
阅读 222
收藏 1

单例模式和静态方法的讨论,网上有很多!

我总结一下:单例模式和静态方法在很多地方是类似,但是单例模式更体现面向对象。

其实我想问的是,仅仅对于工具类和配置文件,到底用哪一种更好呢。(非工具类,如果只要一个实例,确实觉得应该用单例),但是工具类和配置,就跟math一样,那为什么还用单例好呢?(问题1)

另外,我在看文章的时候,有些人讲到单例是为了将来,这让我想到了另一个问题。

我刚参加工作,看别人的代码中有这么一种类。

private String F_A
    private String F_B;
    private String F_C;
    public String getF_A() {
        return F_AddTime;
    }
    public void setF_A(String f_A) {
        F_A = f_A;
    }
        public String getF_B() {
        return F_C;
    }
    public void setF_A(String f_B) {
        F_C = f_B;
    }     

  public String getF_C() {
        return F_C;
    }
    public void setF_A(String f_C) {
        F_C = f_C;
    }
这不是教科书的例子,而是实际项目中,别人的代码把某些类每个属性都设为private,然后提供getter /setter,但是在getter/setter又不加以任何条件限制。这种只为封装而封装的方法有什么意义?还是说,为了将来?或者java推荐这么写?(问题二)

加载中
0
甘薯
甘薯

1.单例其实只是为了节省资源, 把无状态的纯工具类设置成只能初始化一次, 事实上如果你愿意, 你可以把单例变成静态类完全没有问题, 具体情况具体分析, 不要为了单例而单例.

2.在多数情况下, getter setter是简单返回值本身的, 但是某些情况下需要提前处理一下, 比如你有2个得到金额数字的方法 一个是得到阿拉伯数字, 一个是汉字, 这样你的getter setter就可以写入代码同步这个数字的表示, 比如你可以在set阿拉伯数字的时候同时改变中文数字, 也可以在set中文数字的时候同时改变阿拉伯数字, 如果你不通过getter 和setter封装而直接赋值的话就没有这个方便了.

0
amidk
amidk
private List list; public List getList() { return Collections.unmodifiableList(list);
    
}
0
pf_miles
pf_miles
java中的单例模式正确姿势:http://weibo.com/1674333040/BEkMh80lY?type=comment#_rnd1423317615017
返回顶部
顶部