Ask:
封装的意义是?
不是可以通过set***()方法和get***()方法得到或修改他的值,那么意义如何体现呢?
想了好久,好乱
另外,什么叫工厂方法呢?
求前辈指点迷津
我知道封装是为了数据的安全性,但是............
Answer:
set / get 方法可以对对象中的某一个属性进行操作,访问这些数据对外只提供了这么一个接口。
如果不提供这些方法,属性若为 private 就变得无法访问了。
如果属性变为 public,就好比,到银行去存钱,不是通过柜面进行操作的,而是直接跑到银行的金库里面自己去拿钱了,这样就很不安全,这个例子中,可以把银行金库中的钱看作是某一对象的属性,而柜面的工作人员、出纳柜台就可以看作是 set / get 方法了,也就是让对外服务提供某些接口,具体里面的操作就隐藏起来了。
工厂方法指的是根据不同的情况产生不同的对象,比如:
public static Dao getDao(String dbmsName) throws UnsupportDatabaseException {
if( dbmsName.equalsIgnoreCase( "SQL Server ") ) {
return new SqlServerDao();
} else if( dbmsName.equalsIgnoreCase( "Oracle ") ) {
return new OracleDao();
} else if( dbmsName.equalsIgnoreCase( "MySQL ") ) {
return new MySQLDao();
} else {
throw new UnsupportDatabaseException(dbmsName);
}
}
其中 Dao 是 SqlServerDao、OracleDao、MySQLDao 的接口。
上面这段代码就是一个典型的工厂方法,通过传入的数据库名称来确定,并获得不同的数据库处理实现。若使用的数据库并没有实现,则进行异常处理。
****************************************************************
set/get方法都实现了当然可以读写。
但是,如果该数据只允许外部读取,就可以不实现set方法:封装
还有一个作用是,实际的属性和返回类型不一样:如用布尔值代表性别,但是看的时候希望看到男性女性,就
get方法为:
String getSex(){
if(set} return "男性 ";
return "女性 ";
}
这也是一种封装,用的人并不需要关心存的是什么东西
*********************************************************************
封装是指隐藏对象的属性和实现细节,仅仅对外公开接口。封装能为软件系统带来以下优点:
(1)便于使用者正确的方便的理解和使用系统,防止使用者错误修改系统的属性。还是以供电系统为例,过去房屋墙壁的上方都是电线,现在的房屋里电线都 "不见 "了,在墙壁上只露出了一些电源插口。为什么要把电线藏起来呢?理由很简单,暴露在外面的电线不安全也不美观。
再比如电视机系统,尽管它本身的实现很复杂,但用户使用起来却非常简单,只要通过遥控器上的几个按钮就能享受电视机提供的服务。电视机的实现细节被藏在它的大壳子里,没有必要向用户公开。
(2)有助于建立各个系统之间的松耦合关系,提高系统的独立性。当某一个系统的实现发生变化,只要它的接口不变,就不会影响到其他的系统。
(3)提高软件的可重用性,每个系统都是一个相对独立的整体,可以在多种环境中得到重用。例如干电池就是一个可重用的独立系统,在相机、手电筒、电动剃须刀和玩具赛车中都能发挥作用。
(4)降低了构建大型系统的风险,即使整个系统不成功,个别的独立子系统有可能依然是有价值的。例如相机损坏了,它的干电池依然有用,可以安装到手电筒中。
一个设计良好的系统会封装所有的实现细节,把它的接口与实现清晰的隔离开来,系统之间只通过接口进行通信。面向对象的编程语言主要是通过访问控制机制来进行封装,这种机制能控制对象的属性和方法的可访问性。
摘自《Java面向对象编程》一书,作者:孙卫琴
分享到:
相关推荐
本文主要讲了一下关于可控硅最后工艺封装的意义,希望对你的学习有所帮助。
以太网中实现帧的封装与解析,实现以太网中对帧的封装与解析
芯片测试的意义.pdf 第12章-集成电路的测试与封装.ppt 第三章-封装与测试技术ok.ppt 芯片封装引线电性能的测试.pdf 芯片封装测试流程详解.ppt 芯片封装类型(搜集整理各种芯片封装的介绍及运用).doc 芯片测试的几个...
PCB封装库的命名规则
芯片测试的意义.pdf 常见IC封装技术与检测内容.pptx 第12章-集成电路的测试与封装.ppt 第三章-封装与测试技术ok.ppt 封装测试工艺教育资料.pdf 集成电路封装和可靠性Chapter2-1-芯片互连技术.pdf 集成电路封装...
看到很多会员说封装时出现各种各样的问题,感觉还是因为看... 本文中涉及的文章及帖子,可能部分会员无法阅读,如果是这种情况,请你努力发表有意义的帖子,达到中级会员,这样就可以阅读了。对你造成的不便还请谅解!
对芯片总体生产流程,封装芯片的意义,如何封装芯片,简单介绍。
内含开关电源设计中 常用的元器件原理图库及PCB封装库,包括电阻、电容(贴片及插件)、电感、二极管、变压器(EE、RM型)、保险丝、稳压管(431)等器件 能够应对大多数电源设计需求
SIM卡基础, 各管脚意义, 封装定义 SIM卡是一张符合GSM规范"智能卡
讲述半导体整个的封装过程及其在今后的发展情况。微电子作为高技术行业对提高我国的科技水平具有重大的意义!
使用ImageLoaderUtil图片加载封装库实现一个真正意义的图集功能 具体详情请参考:https://github.com/soulrelay/Gallery
flv格式封装分析器 介绍了flv各个tag的字段及意义,使其对flv封装格式有更好的了解。
也就是说,并未在类继承时实现了真正意义的封装。 笔者历经多年javascript的开发,痛彻体会javascript面向对象编程的不便性,精心制作了一个类的定义与继承功能的js,实现了在javascript中对类的定义、继承、封装...
计算机网络课程设计-帧封装.doc 帧是在数据链路层数据进行传输与交换的基本单位。构造帧对于理解网络协议的概念、协议执行过程以及网络问题处理的一般方法具有重要的意义。本次课程设计的目的是应用数据链路层与介质...
封装不是单纯意义的隐藏 加粗样式 1、封装数据:主要原因是:保护私隐,明确区分内外。将数据隐藏起来这不是目的。隐藏起来然后对外提供操作该数据的接口,然后我们可以在接口附加上对该数据操作的限制,以此完成对...
Class:HotkeyAPI--仅仅封装了用于操作Hotkey的API函数,不具有其它意义! Class:HotkeyCode--定义了热键的"键组合",支持串行化;使得用户可以将热键定义进行记录和随时 更改(重载:==/!=/ToString/Prase/Equals/...
AngularJS封装$http.post()实例详解 用了不是很长的时间跟了一个移动APP...其实这不是一个很复杂的问题,归根到底就是一个收益比率的问题,如果项目规模不是很大,那么过多考虑封装问题本身就没什么意义,对于项目的
adv7123器件封装手册,详细。adv7123的功能意义!及其数据手册。
基于SECS标准的半导体封装设备串口通讯的实现,(论文,很有参考意义)
主要介绍了从组件封装看Vue的作用域插槽的实现,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧