我来说说封装

封装,面向对象的三大特性:隐藏对象的属性和实现细节,仅对外提供公共访问方式。

  1. 对于一个面向对象中的类而言,类内部的私有属性和方法对外不可见,外界能访问的只有公共方法。方法可见不可见不是重点,重点是类封装了它的实现细节。类的使用者无需关心类内部具体的实现细节,直接使用类的公共方法即可。

  2. 对于一个模块而言,模块封装了内部实现的细节。使用者使用公共的API即可。

  3. 对于一个服务而言,同样的道理,使用这使用公开的API调用这个服务,同样不需要关心服务实现的细节。只需要知道这个服务可以提供这样的功能就够了。

  4. 领域驱动设计中的战略设计,主要是识别限界上下文,划分子域。在一个特定的限界上下文内,使用通用语言来描述。子域同样会隐藏它内部的实现细节。

为什么要封装?

人脑的处理能力是有限的。

  1. 在写一段具体的代码时,例如一个方法或函数时,会集中注意可能使用到哪些变量。
  2. 在写一个类的时候,会集中注意力在这个类有哪些方法,每个方法实现哪些功能,我可以使用哪个方法,不再关注方法内部怎么实现的。
  3. 在看一个第三方模块时,比如一个jar,会关注它提供了哪些公开类,每个类有哪些功能。在划分模块时,我们会关心模块之间的调用关系,而不是模块内部实现细节。
  4. 在调用一个远程服务时,我们会关注这个服务有哪些可访问的API,而不会也没有精力再去看这个服务内部怎么实现的。

正是因为我们的大脑处理能力有限,我们在不同的层次,才需要不同的抽象级别,把事情简单化。否则在一张非常大的设计图上,把所有细节都描述出来,我们会分不清主次。以至于:一叶障目不见泰山。

抽象 == 简化

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值