C++ Mixin usage summary

本文回顾了作者从大学时期开始学习C++的经历,并分享了近年来在Delphi、Java、C#等多种语言中积累的设计经验。重点介绍了C++中的Mixin模式,包括其在类型构造中的作用以及如何通过模板实现静态Mixin。

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

    想起来,从大二开始学习C++到使用,到目前也有近8年了,时间说起来还是挺长的,但要说起掌握多好,也未必有现在还在校的学生领悟得好:)
    唯一有点感觉的设计,还是近些年先后从Delphi, Java,C#, Javasript,Ruby等其他语言体会来的。回过头来看C++的各种典型框架,多少有醍醐灌顶的感觉:),这些是以前在学校时候的总结,现在抽个时间记下来.

   Mixin目前是我认为现代程序设计语言中类型构造的非常强有力的方案。从Interface implementation,Abstract class inherit  到 Mixin一路过来,出现了不少精彩的设计模式。类型构造在C++中有个强大的Template支持,很容易做到静态的Mixin.
Mixin可以看作具有aspect性质的单一功能模块,在C++中它表现为Instantiate time mixin或者Define time mixin,一些mixin的pagers并没有从已有成熟框架的角度来描述Mixin:
我这里给出ATL中Mixin的理解,mixin是对target class有implicit interface依赖的abstract/partial class.
C++ Template 中的Mixin模式:
(1) 把自身作为父类的template参数传入,此时表示把父类Mixin进自身,约束是父类要定义为Mixin Class,该父类有对外部传入的模板参数类型的接口有依赖;例如下面表示 B被mixin到A和TBase中,作为Mixin Class的B可以把template parameter作为聚合的类型,或是是被用于扩展的父类(如TBase)
template<typename TBase>
class A : public B<A, TBase>
{

}
(2)上面A和B的关系可以按2种情况理解,没有TBase,那么A作为target class,它将B mixin到自身;如果存在TBase,那么这个A本身也是作为一个Mixin,它除了把TBase这个target class传递给B,也把B mixin到自身,因此,这种可以通过继承的语法不断串连Mixin的方式就是Mixin Layer。在一些papers里面,Mixin layger是用精确的Nested class实现的。
posted on 2006-04-13 13:07 Joney 阅读( ...) 评论( ...) 编辑 收藏

转载于:https://www.cnblogs.com/Joney/archive/2006/04/13/374203.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值