设计模式 六大原则之里氏替换原则

文章目录

概念

子类对象能够替换程序中父类对象出现的任何地方,并且保证原来程序的逻辑行为不变及正确性不被破坏。

替换

替换的前提是面向对象语言所支持的多态特性,同一个行为具有多个不同表现形式或形态的能力。

逻辑行为不变

在不了解派生类的情况下,仅通过接口或基类的方法,即可清楚的知道方法的行为,而不管哪种派生类的实现,都与接口或基类方法的期望行为一致。

拆解

拆解出概念,就是这2个情况。面向接口的编程中,几乎就是这样,再来看看UE的代码逻辑。

这个是INavAgentInterface类。

这是controller类。

这个是pawn类。

随便找个函数看看怎么实现的

这个是INavAgentInterface类;

这是controller类;

这个是pawn类。

小结

这个里氏替换,就是这个意思,只要类型是一样的,子类可以在父类中出现的任何地方替换掉。本身这个函数实现都是在子类中实现的。父类也是要调用子类中的方法。这个主要是面向接口编程的范式,从那个角度看,确实是这样的。当然也可以看看其他的程序或者优秀的库代码。OK,翻篇。

相关推荐
Michael_lcf1 小时前
Agent设计模式:思考-行动-观察循环的本质与局限
设计模式·agent设计模式·agent设计模式的本质
丰锋ff2 小时前
设计模式学习笔记
笔记·学习·设计模式
米啦啦.3 小时前
设计模式/
观察者模式·单例模式·设计模式·工厂模式
QuZhengRong4 小时前
【AI】Agent 全栈进阶|Agent 设计模式
人工智能·学习·设计模式·llm·agent
码匠许师傅5 小时前
【设计模式精讲】2. 设计原则基石:SOLID 与几条关键原则
java·设计模式·log4j
AI人工智能+电脑小能手7 小时前
大白话说Java设计模式-41-备忘录模式(源码剖析篇)
java·设计模式·备忘录模式·源码分析·serializable·undo log·spring statemachine
yinchnag8 小时前
CRTP:奇异递归模板模式在 Go 模块系统中的实现
设计模式·go
AI人工智能+电脑小能手9 小时前
大白话说Java设计模式-40-备忘录模式(业务实战篇)
java·设计模式·事务回滚·备忘录模式·状态保存·spring transactional·购物车快照
bryant_meng1 天前
【Codex】Part 19 — Codex Prompt Design Patterns
设计模式·prompt·playbook·结果优先·用证据定义完成
AI人工智能+电脑小能手1 天前
大白话说Java设计模式-38-迭代器模式(业务实战篇)
java·设计模式·迭代器模式·stream·遍历封装·集合通用·分页遍历