问题描述:
大家都知道,javaBean的属性定义为pirvate,然后提供get set方法
我可以定义成public,不提供get set方法,这样也是可以的呀,为什么还要定义为private?
解释:
就我的理解,语言本身来讲,你只是简单存取下数据,也不考虑什么对象啊之类的各种概念,当然可以直接public掉,来尽快的完成程序功能即可。
考虑到所谓的面向对象的概念了嘛,你当然要懂得保护自己,不能把自己的属性这样的个人隐私public掉,让别人随意弄你。这个时候提供get/set方法给别人去用当然更好点,你可以在get/set里面搞其它小动作,嘿嘿。
再考虑到模式啊,切面啊之类的很多对我们真实“堆”代码情况下的冗余设计,那肯定得“脱下裤子再放屁”咯哈。
其实说白了,你完全可以直接public掉属性然后各处来用,语言本身没不许你裸的规则,当然大多数时候你也可以全裸上阵。就是有时候把,你已经全裸各处上阵了,遇到个要set/get前做些小动作的时候,你就傻眼了。
而且现在大多数开发,都是依赖于各种已有的库,框架来开发的。你这样一个突然出现的全裸异类,可能得不到人家已有库/框架的支持。
在get/set里面搞其它小动作,能搞什么小动作呢?
日常中最常见的是这么一种情况:状态(status)字段,用的数字1,2,3这样的标识出来数据所处的状态,可是到页面显示,要显示“正常/失败/成功“这样的文字,这个时候一般就会定义一个属性(statusTxt),然后不提供set方法,在get的里面,直接拿到状态(status)然后根据1,2,3的对应关系,返回对应的文字。
顺便在这里提一下泛型:
private ArrayBlockingQueue<Request> queue;
Request request = queue.take();