正在加载图片...
倘若说,MFC的“封装”纯粹是一种多余,那或许也还可以接受。然而MFC偏偏还要在 这种冗余的封装上建立自已的应用程序架构。和前面的“封装”一样,MFC建立应用架构的 出发点也是良好的,为了方便 Windows程序员编程的难度。结果却更糟糕。有问题的架构 犯了类库或接口提供者的大忌:“有协议编程” 什么叫“有协议编程”?我们先来讲“无协议编程”。所谓“无协议编程”是指接口的 提供者在提供接口时,同时也提供接口的使用约定。这一套约定应该在接口所要提供的功 能上广泛适用,而无须再有种种特殊的例外。这样的接口显然非常适于使用。打个比方就 如交通规则。“红灯停绿灯”行应该是普遍适用的规则,如果在红灯停绿灯行还附加以下 例外条款: 1、单号并且在阴天下东行的路面上红灯行绿灯停; 2、轿车在乘客人数为奇数的情况下见红灯允许直行但不能右拐 3、日间12点到14点区间并且街心交警为女性时,红灯停或行临时取决于女警的身高 是否高于1米70 尽管这些例外都是一些不常见的情况,但想像一下你自已是这种制度下生存的司机吧 学习编程,如果挑错了我们每天都要面对的封装类库。就将永远都在努力处理这些无任何 意义的问题。和司机不同的是你倒不会有多难受一一一个人陷在泥潭中久了,往往就会认 为自已挣扎的动作优美得堪称艺术 MFC的CWnd提供了对 Windows最基本的窗口元素的封装,其中对创建窗口的函数的封 装为: 未封装的API: HWND CreateWindow( LPCTSTR lpClassName, / registered class name倘若说,MFC 的“封装”纯粹是一种多余,那或许也还可以接受。然而 MFC 偏偏还要在 这种冗余的封装上建立自已的应用程序架构。和前面的“封装”一样,MFC 建立应用架构的 出发点也是良好的,为了方便 Windows 程序员编程的难度。结果却更糟糕。有问题的架构 犯了类库或接口提供者的大忌:“有协议编程”。 什么叫“有协议编程”?我们先来讲“无协议编程”。所谓“无协议编程”是指接口的 提供者在提供接口时,同时也提供接口的使用约定。这一套约定应该在接口所要提供的功 能上广泛适用,而无须再有种种特殊的例外。这样的接口显然非常适于使用。打个比方就 如交通规则。“红灯停绿灯”行应该是普遍适用的规则,如果在红灯停绿灯行还附加以下 例外条款: 1、 单号并且在阴天下东行的路面上红灯行绿灯停; 2、 轿车在乘客人数为奇数的情况下见红灯允许直行但不能右拐; 3、 日间 12 点到 14 点区间并且街心交警为女性时,红灯停或行临时取决于女警的身高 是否高于 1 米 70…… 尽管这些例外都是一些不常见的情况,但想像一下你自已是这种制度下生存的司机吧。 学习编程,如果挑错了我们每天都要面对的封装类库。就将永远都在努力处理这些无任何 意义的问题。和司机不同的是你倒不会有多难受——一个人陷在泥潭中久了,往往就会认 为自已挣扎的动作优美得堪称艺术。 MFC 的 CWnd 提供了对 Windows 最基本的窗口元素的封装,其中对创建窗口的函数的封 装为: 未封装的 API: HWND CreateWindow( LPCTSTR lpClassName, // registered class name
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有