C#封装-里氏替换原则
文章目录
- 概述
- 一、里氏替换原则(Liskov Substitution Principle ,LSP)
- 二、实例
- 三、is和as
- 四、其他设计原则
- 总结
概述
里氏代换原则(Liskov Substitution Principle LSP)面向对象设计的基本原则之一。
LSP是继承复用的基石,只有当衍生类可以替换掉基类,软件单位的功能不受到影响时,基类才能真正被复用,而衍生类也能够在基类的基础上增加新的行为。
里氏代换原则是对“开-闭”原则的补充。实现“开-闭”原则的关键步骤就是抽象化。而基类与子类的继承关系就是抽象化的具体实现,所以里氏代换原则是对实现抽象化的具体步骤的规范。
一、里氏替换原则(Liskov Substitution Principle ,LSP)
概念:指的是任何基类可以出现的地方,子类一定可以出现。
理解:父类对象装子类对象。
作用:方便进行对象存储和管理。
二、实例
三、is和as
is:判断一个对象是否是指定类对象。返回值:bool
是为真,不是为假
as:将一个对象转换为指定类对象。返回值:指定类型对象
成功为对象,失败为null
四、其他设计原则
单一职责原则(SRP-Single Responsibility Principle)
指一个类的功能要单一,不能包罗万象。比如一个人,分配的工作不能太多,不然一天到晚忙的要死,但效率会很低下。
开放封闭原则(OCP-Open Close Principle)
一个模块在拓展性方面应该是开放的而在更改性方面应该是封闭的。比如:一个网络模块,原来只有服务端功能,而现在要加入客户端功能,那么应当在不修改服务端功能代码的前提下,就能够增加客户端功能的实现代码,要求在设计之初,就应当将服务端和客户端分开,公共部分抽象出来。
依赖倒置原则(DIP-Dependency Inversion Principle)
上层逻辑依赖下层逻辑。假设A是B的父类,但A需要用到B的功能,这个时候,A不能直接使用A中的具体方法和类,而是需要在A中定义一个抽象接口,并由B来实现这个抽象接口,A只需要使用这个抽象接口,就达到了依赖倒置的目的,A也解出了对B的依赖,反过来是B依赖于A定义的抽象接口。
接口分离原则(ISP-Interface Segregation Principle)
模块间要通过抽象接口隔离开,而不是通过具体的类强耦合起来。
总结
里氏替换原则
概念:父类容器装子类对象
作用:方便进行对象的存储和管理
使用:is和as
is 用于判断 判断一个对象是否是指定类对象
as 用于转换 讲一个对象转换为指定类对象
C#封装-里氏替换原则相关推荐
- java 重写方法 访问权限_为何Java中子类重写方法的访问权限不能低于父类中权限(内含里氏替换原则)...
为何Java中子类重写方法的访问权限不能低于父类中权限 因为 向上转型及Java程序设计维护的原因 例: 假设一个父类A 拥有的方法public void setXXX(){}可以被其他任意对象调用这 ...
- 《设计模式》杂记之里氏替换原则
在这篇博文中,我想把自己学习过的里氏替换原则一些好知识点分享给大家.首先我想把继承的一下优缺点给大家分享一下,然后再引出里氏替换原则吧!<?xml:namespace prefix = o ns ...
- 软件设计的七大原则 --开闭原则 里氏替换原则 依赖倒置原则
在软件开发中,为了提高软件系统的可维护性和可复用性,增加软件的可扩展性和灵活性,程序员要尽量根据 7 条原则来开发程序,从而提高软件开发效率.节约软件开发成本和维护成本. 这 7 种设计原则是软件设计 ...
- 设计模式|LSP(里氏替换)原则
软件质量保障 专注测试圈,自动化测试.测试平台开发.测试新技术.大厂测试岗面经分享, 可以帮忙内推BATJ等大厂!欢迎加VX沟通交流: ISTE1024 在面向对象的语言中,继承是非常优秀的语言机制, ...
- 深入理解JavaScript系列(8):S.O.L.I.D五大原则之里氏替换原则LSP
前言 本章我们要讲解的是S.O.L.I.D五大原则JavaScript语言实现的第3篇,里氏替换原则LSP(The Liskov Substitution Principle ). 英文原文:http ...
- 【转】深入理解JavaScript系列(8):S.O.L.I.D五大原则之里氏替换原则LSP
前言 本章我们要讲解的是S.O.L.I.D五大原则JavaScript语言实现的第3篇,里氏替换原则LSP(The Liskov Substitution Principle ). 英文原文:http ...
- 嘻哈说:设计模式之里氏替换原则
1.定义 按照惯例,首先我们来看一下里氏替换原则的定义. 所有引用基类(父类)的地方必须能透明地使用其子类的对象. 通俗的说,子类可以扩展父类功能,但不能改变父类原有功能. 核心思想是继承. 通过继承 ...
- Java设计模式之里氏替换原则(Liskov Substitution principle)
2019独角兽企业重金招聘Python工程师标准>>> Java是面向对象的语言,那么什么是面向对象程序设计呢? 面向对象程序设计(英语:Object-oriented progra ...
- 设计原则——里氏替换原则
1.全称 liskov substitution principle 缩写为:LSP 2.解释 继承必须确保超类所拥有的性质在子类中仍然成立 里氏替换原则主要阐述了有关继承的一些原则,也就是什么时候应 ...
最新文章
- CString工作原理和常见问题分析
- 大话风险投资的风险-不只是独角戏(上)
- HDU-2102 A计划 BFS
- 【领奖啦】新年新客见面礼抽奖活动中奖名单出炉!
- 删除文件时,提示没权限删除文件怎么办
- python人脸识别程序如何嵌入到app_只用Python就能写安卓,简单几步实现人脸识别的App...
- java foreach 实现原理
- MySQL - 行锁 表锁 乐观锁 悲观锁 读锁 写锁
- HDU2094 产生冠军【set】
- Android知识散点
- 一秒钟世界上会发生多少事_一秒之中会发生什么
- input[type=radio]自定义样式
- C语言程序员面试100题,c语言面试最必考的十道试题,求职必看!!!
- 页面置换算法 (全)
- 实现全站http到https的301转向(实测有用)
- 陪读21:《像利弗莫尔一样交易·买在关键点》——板块时机
- 数字货币期货现货交易技巧,把握关键进场的买入点!(纯干货)
- 让人心动的jQuery插件和HTML5动画
- pikachu XSS Cross-Site Scripting(皮卡丘漏洞平台通关系列)
- JAVA 实现《角色扮演侦探》游戏
热门文章
- x64+dbgview 中如何显示kdPrint的几种方法总结
- 方便的记事本app有哪些 快捷方便的生活记事软件推荐
- 度目视频分析盒子-解决方案-配合门禁使用介绍
- 详细介绍外观设计专利的申请流程和费用
- 笔试真题解析分享|小红书3.26第三题解题思路
- C语言程序——输出字符
- chessboard
- 统计学基础专栏02---数据和抽样分布
- vim 在linux下中如何设置显示行数
- 2022年_蓝桥杯_省赛_4月23日真题_第十三届_python_第六题_小蓝对角线找奖品