(八)面向对象的设计原则之四
一.替换原则:
1.子类必须能替换成它们的基类,并出现在父类能够出现的任何地方。
2.LSP原则所需要解决的问题:
a.正如何正确地进行继承方面的设计
b.最佳的继承层次如何获得
c.避免所设计的类层次陷入不符合OCP原则的状况
3.遵守此原则的方式:
a.父类的方法都要在子类中实现或重写,并且派生类只实现其抽象类中声明的方法,但不能给出多余的方法定义或实现。
b.在客户端程序中只应该使用父类对象而不应该直接使用子类对象。这样可以实现运行期绑定。(动态多态)
二.实例:
<?php abstract class Cache{ /* * 设置一个缓存变量 * * @param String $key 缓存key * @param mixed $value 缓存内容 * @param int $expire 缓存时间(秒) * return boolean 是否缓存成功 */ public abstract function set($key,$value,$expire=60); /* * 获得一个已经缓存的变量 * @param String $key 缓存key * @return mixed 缓存内容 */ public abstract function get($key); /* * 删除一个已经缓存的变量 * @return boolean 是否删除成功 */ public abstract function del($key); /* * 删除全部缓存变量 * @return boolean 是否删除成功 */ public abstract function delAll($key); /* * 检测是否已经存在对应的缓存 */ public abstract function has($key); }
版权声明:本文为博主原创文章,未经博主允许不得转载。
以上就介绍了(八)面向对象的设计原则之四,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

SQL中的Identity是什么,需要具体代码示例在SQL中,Identity是一种用于生成自增数字的特殊数据类型,它常用于唯一标识表中的每一行数据。Identity列通常与主键列配合使用,可以确保每条记录都有一个独一无二的标识符。本文将详细介绍Identity的使用方式以及一些实际的代码示例。Identity的基本使用方式在创建表时,可以使用Identit

C语言return的用法有:1、对于返回值类型为void的函数,可以使用return语句来提前结束函数的执行;2、对于返回值类型不为void的函数,return语句的作用是将函数的执行结果返回给调用者;3、提前结束函数的执行,在函数内部,我们可以使用return语句来提前结束函数的执行,即使函数并没有返回值。

function是函数的意思,是一段具有特定功能的可重复使用的代码块,是程序的基本组成单元之一,可以接受输入参数,执行特定的操作,并返回结果,其目的是封装一段可重复使用的代码,提高代码的可重用性和可维护性。

一、功能概览键空间通知使得客户端可以通过订阅频道或模式,来接收那些以某种方式改动了Rediskey变化的事件。所有修改key键的命令。所有接收到LPUSHkeyvalue[value…]命令的键。db数据库中所有已过期的键。事件通过Redis的订阅与发布功能(pub/sub)来进行分发,因此所有支持订阅与发布功能的客户端都可以在无须做任何修改的情况下,直接使用键空间通知功能。因为Redis目前的订阅与发布功能采取的是发送即忘(fireandforget)策略,所以如果你的程

源码:publicclassReturnFinallyDemo{publicstaticvoidmain(String[]args){System.out.println(case1());}publicstaticintcase1(){intx;try{x=1;returnx;}finally{x=3;}}}#输出上述代码的输出可以简单地得出结论:return在finally之前执行,我们来看下字节码层面上发生了什么事情。下面截取case1方法的部分字节码,并且对照源码,将每个指令的含义注释在

每年Apple发布新的iOS和macOS大版本之前,用户都可以提前几个月下载测试版抢先体验一番。由于公众和开发人员都使用该软件,所以苹果公司为两者推出了developer和public版即开发者测试版的公共测试版。iOS的developer版和public版有什么区别呢?从字面上的意思来说,developer版是开发者测试版,public版是公共测试版。developer版和public版面向的对象不同。developer版是苹果公司给开发者测试使用的,需要苹果开发者帐号才可以收到下载并升级,是

无法修补的 Yubico 二因素身份验证密钥漏洞已经破坏了大多数 Yubikey 5、安全密钥和 YubiHSM 2FA 设备的安全性。 Feitian A22 JavaCard和其他使用Infineon SLB96xx系列TPM的设备也容易受到攻击。

遇到的问题:在开发过程中,会遇到要批量删除某种规则的key,例如login_logID(ID为变量),现在需要删除"login_log*"这一类的数据,但是redis本身只有批量查询一类key值的命令keys,但是没有批量删除某一个类的命令。解决办法:先查询,在删除,使用xargs传参(xargs可以将管道或标准输入(stdin)数据转换成命令行参数),先执行查询语句,在将查询出来的key值,当初del的参数去删除。redis-cliKEYSkey*(查找条件)|xargsr
