ACE封装——使用继承提高设计清晰和可扩性
2007-09-29 13:28
197 查看
做过网络编程的人都知道sockaddr这个东西,其实最初的时候我也无法理解,为什么要强转指针又传递sizeof这个东西呢。
其实这是C的继承,unix和internet领域有不同的sockaddr形式,sockaddr是逻辑上的基类,通过不同的sizeof可以获得正确的类型信息然后转型。这真是太不好了。
如果你使用的代码中有这样良好的设计但是没有良好的代码形式,那你表现的时候到了,简单的一个C++继承可以漂亮的完成这个工作,这在方便自己使用的同时一定让原作者感动欣慰,他当时也想到了,而苦于没有合适的工具,而你有,不用自己设计就可以完成漂亮事情,这是一件多么美好的事情啊。
回想起我初学网络编程的时候的苦痛,我能理解将一维api转化为继承体系的重要性。
那个时候,为了记住各个api我付出了很大的记忆劳动,尽管最终有些api是不常用的,但是不记住的话在万一需要用的时候你一定会后悔的。现在看看c socket api那已大列函数依然觉得这是新手要跨越的一个大障碍,幸好ace早就考虑到了这个问题,ACE_SOCK、ACE_SOCK_Acceptor、ACE_INET_Addr的继承体系覆盖了这一切函数。有些共同的东西被包覆在了基类里,子类用来实现有区别的东西。
理解这个多维体系将比理解一维线性的那一堆方法容易一些。这对使用者也是一件好事。
其实这是C的继承,unix和internet领域有不同的sockaddr形式,sockaddr是逻辑上的基类,通过不同的sizeof可以获得正确的类型信息然后转型。这真是太不好了。
如果你使用的代码中有这样良好的设计但是没有良好的代码形式,那你表现的时候到了,简单的一个C++继承可以漂亮的完成这个工作,这在方便自己使用的同时一定让原作者感动欣慰,他当时也想到了,而苦于没有合适的工具,而你有,不用自己设计就可以完成漂亮事情,这是一件多么美好的事情啊。
回想起我初学网络编程的时候的苦痛,我能理解将一维api转化为继承体系的重要性。
那个时候,为了记住各个api我付出了很大的记忆劳动,尽管最终有些api是不常用的,但是不记住的话在万一需要用的时候你一定会后悔的。现在看看c socket api那已大列函数依然觉得这是新手要跨越的一个大障碍,幸好ace早就考虑到了这个问题,ACE_SOCK、ACE_SOCK_Acceptor、ACE_INET_Addr的继承体系覆盖了这一切函数。有些共同的东西被包覆在了基类里,子类用来实现有区别的东西。
理解这个多维体系将比理解一维线性的那一堆方法容易一些。这对使用者也是一件好事。
相关文章推荐
- 面向对象设计三大原则(封装变化点,对接口进行编程,多使用组合而不是继承)
- 继承于抽象类的控件不能使用设计器
- 使用C++设计一个类,该类最多能被实例化3次且不能被继承
- Python基础(6)- 类和对象(使用、继承、派生、组合、接口、多态、封装、property、staticmethod、classmethod、反射、slots、上下文管理协议、元类)
- IOS开发之电子菜单的设计与实现(继承、封装、多态)
- 黑马程序员面试题面向对象一(封装,构造函数,this,static,单例设计模式,继承)
- C语言和设计模式(继承、封装、多态)
- C语言设计模式-继承、封装和多态
- 设计模式_Java多态,继承,封装
- 设计一个类能够使用ACE的各种框架
- C02-程序设计基础提高班(C++)第12周上机任务-类的继承
- 设计模式——结构型模式之在需要使用多层次继承时先考虑下装饰器模式
- 使用句柄类封装继承体系
- 面面向对象(上) 封装,继承,对象初始化流程,单例设计模式向对象(上) 封装,继承,对象初始化流程,单例设计模式
- Jser 设计模式系列之面向对象 - 接口封装与继承
- 利用继承技术提高混乱效果 -> 使用代理类
- [阅读笔记]面向对象的设计法则--法则1:优先使用(对象)组合,而非(类)继承 Favor Composition Over Inheritance
- 第五十九届冠军(使用C++设计一个类不能被继承)
- 0.1-设计模式怎么样解决设计问题-抽象与封装、继承、多态
- 【设计优化】-使用缓存(Cache)提高程序性能