C++类和接口的设计原则探讨
2013-04-11 16:25
260 查看
面向对象编程的概念构建于三个基本特征之上:封装,继承,多态。在C++中,class是面向对象编程概念的核心和具体形式。class通过私有成员体现“封装”,通过直接继承或者组合体现“继承”,通过虚函数和动态绑定(dynamic binding)体现“多态”。Class的设计质量直接决定了整个系统的质量。 a.从整体功能层面谈class设计: a.1 单一功能原则 一个class就其整体应该只提供单一的服务。如果一个class提供多样的服务,那么就应该把它拆分,反之,如果一个在概念上单一的功能却由几个class负责,这几个class应该合并。 a.2 开放/封闭原则 一个设计并实现好的class,应该对扩充的动作开放,而对修改的动作封闭。也就是说,这个class应该是允许扩充的,但不允许修改。如果需要功能上的扩充,一般来说应该通过添加新类实现,而不是修改原类的代码。添加新类不单可以通过直接继承,也可以通过组合。
b.接口隔离原则 从内部我们看到的是实现。因为系统肯定要不断修改,因此实现免不了不停的变化,但是接口又被要求尽量保持稳定。这两者的矛盾必须通过良好的设计尽量避免,所以接口的设计保持最小而完整而且接口与实现细节要隔离。
c.类之间的关系应该是松耦合减少依赖 一个类对另外一个类的依赖性应当是建立在最小的接口上的 设计一个高效率的类型(class 型别) 1、对象如何产生和销毁? 确定构造函数和析构函数的设计。 2、对象的初始化和赋值有什么不同? 决定构造函数和赋值函数的设计。 3、对象如何传值 决定拷贝构造函数的设计 4、确定合法的范围 成员数据的定义域 确定做什么检查,何时抛出异常 5、判断是否能从已有的类继承 如果能继承,注意受基类哪些约束,哪些要用虚函数。 6、允许那种类型转换 构造函数可以用作隐式类型转换,显式类型转换要自定义。 7、新类型需要哪些运算和函数 确定class的接口。 8、哪些运算和函数必须禁用 放到private成员中。 9、新类型的对象可调用哪些函数 确定公有成员函数,保护成员函数,私有成员函数。 10、是否通用类型 确定是否要用类模板 *即使是一个抽象基类,如果它有非静态数据成员,也应该给它提供一 个带参数的构造函数 *不要将析构函数设计为纯虚的,这不是一个好的设计 *不要滥用虚函数 *决不在构造函数或析构函数中使用虚函数机制
相关文章推荐
- C++类和接口的设计原则探讨
- C++类和接口的设计原则探讨
- C++类和接口的设计原则探讨
- C++类和接口的设计原则探讨
- C++类和接口的设计原则探讨
- C++类和接口的设计原则探讨
- C++类和接口的设计原则探讨
- C++类和接口的设计原则探讨
- C++类和接口的设计原则探讨
- C++类和接口的设计原则探讨
- C++类和接口的设计原则探讨
- C++类和接口的设计原则探讨
- C++类和接口的设计原则
- 六大设计原则之接口隔离原则
- OO设计的接口分隔原则
- 小谈子对象中接口的设计原则
- 设计模式无限重读之接口隔离原则(ISP)
- 【转】设计模式六大原则(4):接口隔离原则
- 接口设计六大原则
- 面向对象设计原则之接口隔离原则