写点什么

类的基础

作者:GalaxyCreater
  • 2022 年 7 月 23 日
  • 本文字数:589 字

    阅读完需:约 2 分钟

抽象数据类型


你可以对 ADT(抽象数据类型)进行分层,如果你想在某一个层次上对数据结构进行操作(如堆栈的压入弹出),没问题。而你可以在这一层次上在创建一个针对现实世界的抽象层次。


良好的类接口


类接口应展现一致的抽象层次

可以把类看作用来实现某种 ADT,如果实现的不止一个 ADT,那么这个类可以优化为多个类,让这个类更明确。混杂抽象层次的类,会最终让程序不好理解,逐步堕落得没法维护。


不好的例子:这个类展现了两个 ADT,暴露了使用类库这个内部实现逻辑



优化后:


一定要理解类所实现的抽象是什么


把不相关的信息转移到其他类

当你发现,某类的一半子程序使用类的一半数据,而另外一半的子程序使用另一半数据,那么考虑将它拆分


尽量让接口可以编程,而不是靠注释表达语义


一个接口无法通过编译器检查的部分就是有可能被误用的部分,想办法将语义接口的元素转化成可编程接口的元素。


谨防修改类时破坏类接口的抽象

引入不同抽象层次的操作或成员。不要添加与类抽象接口层次不一致的公共成员


同时考虑抽象性和内聚性

关注类的抽象层次会比关注类的内聚性更有助于深入理解类。如果发现某个类内聚性很弱,那么换个方法,它们的抽象层次是否一致?


良好的封装

封装是一个比抽象更严格的概念。抽象可以给你提供一个忽略实现细节的方式来管理复杂度,而封装强制让你看不到实现细节。如果没有封装,那么抽象很容易被打破,要么两者皆存,要么两者皆失


尽可能的限制类成员的访问性


用户头像

GalaxyCreater

关注

还未添加个人签名 2019.04.21 加入

还未添加个人简介

评论

发布
暂无评论
类的基础_GalaxyCreater_InfoQ写作社区