关于网友提出的“关于单例模式和静态方法的问题,还有一个关于封装的问题。”问题疑问,本网通过在网上对“关于单例模式和静态方法的问题,还有一个关于封装的问题。”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:
问题:关于单例模式和静态方法的问题,还有一个关于封装的问题。
描述: 单例模式和静态方法的讨论,网上有很多!
我总结一下:单例模式和静态方法在很多地方是类似,但是单例模式更体现面向对象。
其实我想问的是,仅仅对于工具类和配置文件,到底用哪一种更好呢。(非工具类,如果只要一个实例,确实觉得应该用单例),但是工具类和配置,就跟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推荐这么写?(问题二)
解决方案1:java中的单例模式正确姿势:http://weibo.com/1674333040/BEkMh80lY?type=comment#_rnd1423317615017
解决方案2:private List list; public List getList() { return Collections.unmodifiableList(list);
}
解决方案3:
1.单例其实只是为了节省资源, 把无状态的纯工具类设置成只能初始化一次, 事实上如果你愿意, 你可以把单例变成静态类完全没有问题, 具体情况具体分析, 不要为了单例而单例.
2.在多数情况下, getter setter是简单返回值本身的, 但是某些情况下需要提前处理一下, 比如你有2个得到金额数字的方法 一个是得到阿拉伯数字, 一个是汉字, 这样你的getter setter就可以写入代码同步这个数字的表示, 比如你可以在set阿拉伯数字的时候同时改变中文数字, 也可以在set中文数字的时候同时改变阿拉伯数字, 如果你不通过getter 和setter封装而直接赋值的话就没有这个方便了.
以上介绍了“关于单例模式和静态方法的问题,还有一个关于封装的问题。”的问题解答,希望对有需要的网友有所帮助。
本文网址链接:http://www.codes51.com/itwd/1164197.html