![]() |
1
2
仅仅因为程序员或编译器可以“看到”私有类型,并不意味着它违反了“封装”。将封装视为“契约”(您不应该使用它,但仍然可以看到它)。 …然而。。。 如果您真的想“隐藏”底层表示,那么问题的答案是使用不透明指针: 下面是C++中的一个示例:
|
|
2
2
通过只公开接口而不公开实现,可以轻松实现封装。在C++中,接口只是一个只有纯虚拟方法的类:
如果您的API基于接口,那么除了封装之外,它还将更加模块化和灵活,耦合更少,更易于测试。因此,在API中使用接口而不是实现类是非常理想的。 当然,您必须使用工厂、构建器和其他设计模式来构建实现接口的真实实例。 |
![]() |
3
1
eC有一个运行时反射模型,它知道所有类的布局,并区分结构(总是在适当的位置分配)和类(类总是在堆上分配,通过了解类布局的运行时机制)。 这背后的想法是,可能是多个和/或连续的小对象(例如Point)更适合于结构,而需要内存管理的更复杂对象更适合于类。这也允许交换具有相同界面但布局完全不同的库。 对C++“皮条客”的需求只是我对C++(另一个是头文件)无法忍受的事情之一,在我不满意为Ecere构建C++类库之后,我设计了eC。 我看到C++代码扩展到4个不同的文件,分别是API、API头、Implementation和Implementation头,每个文件中都有很多行,而不是简单的eC:
Btw eC有一个新网站:) http://ec-lang.org (仍有待改进)。 我总是很乐意在论坛和IRC上回答问题和提供帮助! |
![]() |
M. Koch · API和应用层之间的合同应该放在哪个层/项目中? 2 年前 |
![]() |
overexchange · 客户端锁定是否违反了同步策略的封装? 7 年前 |
|
mangochaser · java——具有多态性和封装的几何形状 8 年前 |
![]() |
LBaelish · 安全/正确使用指针[关闭] 9 年前 |
![]() |
Petr Marek · Javascript类封装行为 9 年前 |