Classes(1)

博客介绍了良好封装的要点,如最小化类和成员的可访问性、不暴露公共成员数据等,还强调要警惕封装的语义违规和过紧的耦合。同时给出了何时使用继承和包含的设计建议,如根据类共享数据和行为的情况来选择。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Good Encapsulation
1. Minimiza accessibility of classes and members.
2. Don't expose member data in public.
3. Don't put private implementation details in a class's interface
4. Favor read-time convenience to write-time convenience.
Code is read far more times than it's written, even during initial development.
5.Be very, very wary of semantic violaions of encapsulation.
Here are some examples of the ways that a user of a class can break encapsulation semantically:
Not calling Class A's initialize() routine because you know that Class A's performFirstOperation() routine calls it automatically.
Not calling the database.connect() routine before you call employee.retrieve(database) because you know that the employee.retrieve() function will connect to the database if there isn't already a connection.
The proble with each of these examples is that they make the client code dependent not on the class's public interface, but on its private implementation.  Anytime you find yourself looking at a class's implementation to figure out how to use the class, you're not programming to the interface; you're programming through the interface to the implementation.
6. Watch for coupling that's too tight.

Design and Implementation Issues
Summary of when to use inheritance and when to use containment:
1. if multiple classes share common data but not behavior, then create a common object that those classes can contian.
2. if multiple classes share common behavior but not data, then derive them from a common base class that defines the common routines.
3. if multiple classes share common data and behavior, then inherit from a common base class that defines the common data and routines.
4. inherit when you want the base class to control your interface; contain when you want to control your interface.

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值