当前位置: 首页 > news >正文

《代码大全》笔记

《代码大全》2 学习笔记,随手记录值得记录、便于记录的知识点,不定时更新。

文章目录

  • 第六章
    • 6.2 良好的类接口
      • 在类的接口中呈现一致的抽象级别
      • 一定要理解类实现的是什么抽象
      • 尽可能使接口可编程而不是表达语义
      • 把抽象和内聚放在一起考虑


第六章

6.2 良好的类接口

在类的接口中呈现一致的抽象级别

反例:

Class EmployeeCensus: pubilc ListContainer {
public:...// 这些子程序的抽象层次在Employee层void AddEmployee( Employee employee );void RemoveEmployee( Employee employee );//这些子程序的抽象层次在List层Employee NextItemInList();Employee FirstItem();Employee LastItem();...
private:...
};

程序员为了便于使用容器类的方法,直接让EmployeeCensus继承ListContainer并封装使用其方法,于是出现了混合抽象,然而这些容器类方法在雇员类层应当被隐藏。
解决方案:

Class EmployeeCensus: pubilc ListContainer {
public:...// 这些子程序的抽象层次都在Employee层void AddEmployee( Employee employee );void RemoveEmployee( Employee employee );Employee NextEmployee();Employee FirstEmployee();Employee LastEmployee();// 提高了抽象层次,将更具体的实现细节抽象成更高级的实体业务...
private:ListContainer m_EmployeeList; // 隐藏ListContainer类库的实现细节...
};

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

要为抽象接口负责,而不是具体实现。设计模式中的另一种解释。
例如将一个提供了150个方法的电子控件类“伪装”成一个只需提供15个方法+额外自定义方法的网格控件类,那么一定要抱着写网格控件的想法去设计类,只提供15个方法和需要的额外方法,而不是暴露一堆不需要的方法,让这个类最终看起来还是像电子控件类。

尽可能使接口可编程而不是表达语义

每个接口都由一个可编程部分和语义部分构成。可编程部分是指编译器予以强制的数据类型、属性等,如果出错会在编译时报错;语义部分则是指这个接口在逻辑上如何使用的假设,例如在调用该方法前“必须先初始化对象O”、“必须先调用方法A”、“对参数内部更具体的格式有要求”,否则就会崩溃。
对于语义部分尽量利用断言或其他技术转换为可编程部分,其次是让接口被用户清晰地理解用法,实在不行写上注释。

把抽象和内聚放在一起考虑

内聚性越好的类往往抽象一致性也不差,如果发现一个类的内聚性很差,也可以从抽象一致性的角度去考虑。

http://www.dtcms.com/a/398760.html

相关文章:

  • 【低代码】阿里Formily通用设计工具Designable学习记录
  • 网站建设客户wordpress如何看网页地址
  • php做的网站如何发布新类型网站
  • mq是如何实现的
  • 【区间贪心】P3661 [USACO17FEB] Why Did the Cow Cross the Road I S|普及+
  • AIGC实战——BicycleGAN详解与实现
  • 基于Element Plus的Vue3远程搜索多选组件实现与优化
  • 网站只做静态页面安全受到影响南昌旅游集团网站建设
  • pom.xml 不在根目录,idea无法识别项目处理方案
  • 网站开发所需硬件昆明微网站搭建
  • 【第25话:路径规划】自动驾驶路径规划概念与理论介绍
  • QT多窗口跳转
  • 栈(Stack)
  • 整体设计 逻辑全链 之8 受控的自然语言-字面拼凑:正则表达式 之2
  • 攻防世界-Web-simple_php
  • 【Linux我做主】进程程序替换和exec函数族
  • 清华最新发布 | 大型推理模型的强化学习综述
  • C++异常处理的根本缺陷:隐式传播的性能陷阱与控制流断裂
  • 【东枫】USRP X310 母版 PCB
  • 山东锦华建设集团有限公司网站嘉瑞建设有限公司网站
  • 食品品牌网站策划美容行业培训网站建设
  • Amazon Timestream新用户实时分析:从零到上手完整指南
  • 淘宝联盟个人网站怎么做电商平台入驻
  • 在 Oracle SQL 中实现 `IF-ELSE` 逻辑 SQL 错误 [12704] [72000]: ORA-12704: 字符集不匹配
  • 勒索软件专攻数据库弱点:Oracle 服务器安全防线告急
  • 常用的表空间维护语句
  • MySQL笔记---数据库基础
  • 【数据迁移】:oracle 大数据上线失败复盘:【大表定义变更】不一致导致生产数据灌入失败及解决方案
  • InnoDB一致性读与锁定读全解析
  • Oracle归档及数据库存储空间查询