首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

SOLID之LSP

里氏代换原则 LSP,Liskov Substitution Principle 子类型必须能够替换掉它们的基类型 若对每个类型S的对象O1,都存在一个类型T的对象O2,使得在所有针对T编写的程序P中,...用O1替换O2后,程序P行为功能不变,则S是T的子类型 LSP是继承关系设计基本原则,也是使OCP成为可能的主要原则之一。...那么D就违反了LSP。显然,D对于f来说是脆弱的。 f的编写者会想去对D进行一些测试,以便于在把D的对象传递给f时,可以使f具有正确的行为。...,意味着LSP与通常的数学法则和生活常识有不可混淆的区别 在OOD中IS-A关系是就行为方式而言,而不是属性,这也就是面向接口编程;派生类的行为方式和输出不能违反基类已经确立的任何限制。...基类的用户不应该被派生类的输出扰乱 简单判断就是“可替换性”,子类是否能替换父类并保持原有行为不变 LSP与架构 LSP从诞生开始,也就差不多这些内容,主要是指导如何使用继承关系的一种方法。

67330
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    从零开始配置vim(23)——lsp基础配置

    上一章,我们初步认识了lsp,并且对 nvim-treesitter插件进行了配置,为编辑器提供了代码着色、自动格式化以及增量选中功能。算是初步体验了 lsp的相关功能。...从这篇开始我们通过lsp的功能,进一步提升代码编辑、查阅等功能的体验 neovim lsp 早期想通过 neovim 使用 lsp 得通过一个额外的插件 nvim-coc 。...好在 neovim 社区听从了程序员们对于 lsp 的呼唤,它内置了lsp 的客户端,并且为了方便配置服务端,它提供了一个名为 nvim-lspconfig 的插件。...require('lspconfig').xx.setup{…} 检查 lsp 的服务端在该缓冲区是否正常运行 print(vim.inspect(vim.lsp.buf_get_clients())...nvim-lsp-installer 插件 require("nvim-lsp-installer").setup {} 我们可以使用 LspInstallInfo 命令来查看当前lsp服务的安装情况

    3.6K10

    从零开始配置vim(26)——LSP UI 美化

    之前我们通过几个实例演示如何配置其他语言的lsp服务,相信各位小伙伴碰到其他的编程语言也能熟练的配置它对应的lsp服务。...本篇讲作为一个补充,我们来优化一下LSP 相关的显示 配置 UI 原始的 lsp 显示有点素,我们使用插件对它进行一些美化,这里使用插件 lspsaga.nvim 。...() 该插件对 NeoVim 原生 LSP 显示做了一些更改,并提供了一些方便的命令来实现LSP 相关的功能。...我们将它对应的功能绑定到快捷键上替换原有的 LSP 对应的快捷键 lsp_keybinds.set_keymap = function (bufnr) print("set lsp keymap...关于LSP的相关配置已经结束了,下一篇我们将要讨论如何使用代码片段进一步减少我们编码时输入的字符数。请各位敬请期待

    2.3K30
    领券