spec,即程序的规约,是程序员和客户端之间的一种契约,简单来说,就是Spec给“供需双方”都确定了责任,在调用的时候双方都要遵守。

Spec的优点:

1.可以隔离“变化”,无需通知客户端

2.可以提高代码效率

3.可以提高代码效率

Spec分为前置条件和后置条件

前置条件:对客户端的约束,在使用方法时必须满足的条件

后置条件:对开发者的约束,方法结束时必须满足的条件

Spec的强度

讨论spec的强度,是为了能够给用新的方法去替换旧的方法划分一个可行与否的标准。我们认为如果一个方法能够替换旧的方法,那么前者的spec一定比后者强

具体而言,如果规约S2>=S1:

1.前置条件更弱(条件更宽松,范围更大)

2.后置条件更强(范围更小)

我是这样理解的:如果想让新的方法和旧的方法行为一致,那么任意旧的输入一定再前置条件内,故前置条件要更宽松(定义域变大),同时得到的结果仍要包含于旧的方法得到的结果,即后置条件要更严格(映射的值要减小)

另外要注意,判定后置条件变化时要以旧的前置条件为前提

LSP中的Spec

我们知道,LSP要求子类的RI>=父类,子类方法的Spec>=父类,其目的就是为了让子类能完美继承父类的行为

关于Spec的一些理解相关推荐

  1. 关于spec的学习理解

    spec是程序与客户端之间关于方法的协议,也是开发者在写这个方法时所需要遵守的准则.它蕴含着对开发者和客户端两边的要求.在实际使用中,规约有很多的必要性以及优点. 一.协调开发者与客户端,提高效率 精 ...

  2. 宝剑锋从磨砺出——编译器gcc的使用

     剑,是一种武器,古龙先生很喜欢论剑,对剑也有不一样的理解:对于剑,使用它的是剑客,而如果要升级则是人的升级,从而推动剑术的提高与用剑的境界的提升. 好的剑都是铸剑师倾入自己的心血浇灌而成的:而对 ...

  3. aws big data_AWS Data Wrangler和Athena入门

    aws big data It is a well-known fact that s3 + Athena is a match made in heaven but since data is in ...

  4. 第2章-Bluetooth® LE audio架构

    机器翻译结果,仅用于学习,不喜勿喷,原文档链接. 蓝牙spec开发遵循一个明确定义的过程.它从新工作提案开始,该提案开发用例并评估市场对任何新功能的需求.新工作提案通常由一个小型研究小组生成,该小组由 ...

  5. 理解和实现分布式TensorFlow集群完整教程

    手把手教你搭建分布式集群,进入生产环境的TensorFlow 分布式TensorFlow简介 前一篇<分布式TensorFlow集群local server使用详解>我们介绍了分布式Ten ...

  6. 数字信号处理实验三用fft对信号作频谱分析_机器学习中的音频特征:理解Mel频谱图...

    如果你像我一样,试着理解mel的光谱图并不是一件容易的事.你读了一篇文章,却被引出了另一篇,又一篇,又一篇,没完没了.我希望这篇简短的文章能澄清一些困惑,并从头解释mel的光谱图. 信号 信号是一定量 ...

  7. RPM包制作之Spec文件详解

    看这篇文章的人基本都有一个想法,就是:"劳资不想用YUM的安装!不是版本太低就是文件分布太野路子",此时我们需要自己订制软件包的需求,我们会把一些源码包按照我们的需求来做成rpm包 ...

  8. 整合用户篇—Oauth2理解与构造简单的系统

    2019独角兽企业重金招聘Python工程师标准>>> 当你运营越来越多的项目,每个项目的业务都不一样,每个需要使用到这些业务的用户就需要注册方能进行使用.如果用户还需要使用其他项目 ...

  9. linux rqm包制作 spec文件详解

    看这篇文章的人基本都有一个想法,就是:"不想用YUM的安装!不是版本太低就是文件分布太野路子",此时我们需要自己订制软件包的需求,我们会把一些源码包按照我们的需求来做成rpm包,其 ...

  10. Opengl-光照-基本光照-冯氏(千万好好理解后面所有的延伸基本都是基于这个的)

    前言 前面我们基本理解了怎么模拟光,怎么设置光的颜色以及物体的颜色来非常不生动形象的模拟光在计算机中.肯定在想,怎么能真的像生活中那样物体可以反光,然后有凉的地方也有不凉的地方,光也有强弱这种?其实前 ...

最新文章

  1. 下一个汽车万亿市场打开!氢能源时代正到来
  2. 解密中国研发团队如何开发VS2010新特性
  3. metasploit 利用MS08-067渗透攻击xp系统全过程
  4. 华为FusionSphere概述——计算资源、存储资源、网络资源的虚拟化,同时对这些虚拟资源进行集中调度和管理...
  5. putty连虚拟机中Linux出现Access Denied
  6. 二分查找离左边元素最近的(可以等于)
  7. 怎么把数据文件上传云服务器,怎么把数据上传导云服务器
  8. android判断是否已经安装成功,android 判断应用程序是否已安装
  9. spring boot @value_spring+vue全栈开发实战-第二章Spring Boot 基础配置-笔记0302-2020
  10. python+vue+django高校教职工人事档案管理系统
  11. 容灾是什么意思?容灾基础知识介绍
  12. 中语言超酷特性 之 --- 泛指(包含证明“白马非马”)
  13. 2013年12月北京市广播电台网络影响力排名
  14. 关于在针对esp32进行编程时出现dl_lib.h: No such file or directory的解决办法
  15. 图:两点之间的最短距离
  16. Java 实现分页功能
  17. php中关于冬夏时令切换引发的问题
  18. qt 判断ctrl键被按下_直播 | 当世界被按下暂停键,幸有阅读可慰藉
  19. Ubuntu kylin 14.04下的spark1.0.1安装
  20. springboot 上传图片存储在后台,并指定存储路径

热门文章

  1. js中如何访问对象和数组
  2. 关于安装Spacy以及de和en模块遇到的坑---附最终解决方案
  3. 2016年中南大学校赛镜像赛(校外队伍)
  4. RecSys'22|CARCA:交叉注意力感知上下文和属性进行推荐
  5. 在mac上使用PDF Expert中常见问题解答
  6. SSM的小说网站含前后台-JAVA【数据库设计、源码、开题报告】
  7. 爬取百思不得姐上面的视频
  8. 机器人前沿--下肢外骨骼机器人
  9. adb connect 连接机顶盒显示:由于目标计算机积极拒绝,无法连接10061
  10. 九种常用输入法特殊符号功能大揭密