开发思想-组合模式和接口多态的一点思考

一、组合模式在项目中用来干什么?

我理解用来创建一类对象最好用组合模式,比如三消游戏中的各种障碍,比如rpg中的各种武器和武器能力,比如Rogue游戏中的各种能力。

组合模式思想中如何创建一个对象,比如创建消除游戏中一个新的障碍,我新建一条配置,设置障碍不能被移动、可以被消除、设置层数为3并且每次触发消除层数-1等等,那么就创建了一个新的障碍,创建交给配置,程序只关心所有能力的实现。

那么游戏中可能只有一个Block对象,而不是有很多子类。

一个对象的行为不由继承树决定,而是由 配置 + 行为组件组合 决定。

添加新方块不需要添加新类,只要配置新的组合。

二、接口更适合在什么场景下用?

现在创建对象不需要用接口-继承-抽象类-多态这一套了,因为一个个对象都是用配置属性组装起来的。

那么什么时候用接口更好?

那就是系统之间的调用用接口,比如方块或障碍可以被点击,那么点击系统必然要持有方块,但是点击系统只需要持有一个接口IClickable,Block实现IClickable即可,点击系统并不需要知道Block实什么,不需要知道如何实现点击功能,只需要调用IClickalbe中的方法即可。接口被用做方块系统和点击系统之间的桥梁。

三、总结

今后的项目,创建对象的环节用组合模式。系统间的调用用接口做桥接。

相关推荐
唐青枫2 小时前
别只会反射:C#.NET Emit 动态生成代码实战详解
c#·.net
咕白m6256 小时前
.NET 环境下 Word 超链接批量提取方案
c#·.net
用户91721561902117 小时前
C# 通信协议增量解析:用状态机处理半包和粘包
c#
小码编匠1 天前
C# 工控上位机必备:数据转换工具类与十个核心模块
后端·c#·.net
唐青枫3 天前
别再乱用 StartNew:C#.NET TaskFactory 任务调度实战详解
c#·.net
Artech3 天前
[MAF预定义的AIContextProvider-03]ChatHistoryMemoryProvider——赋予Agent从经验中学习的能力
ai·c#·agent·memory·maf
Scout-leaf5 天前
C#摸鱼实录——IoC与DI案例详解
c#
咕白m6255 天前
使用 C# 在 Excel 中应用多种字体样式
后端·c#
Artech5 天前
[MAF预定义的AIContextProvider-02]AgentSkillsProvider——将Agent Skills引入MAF
ai·c#·agent·agent skills·maf
2601_962072556 天前
李梦娇常识4600问|题库|打印版
sql·华为od·华为·c#·华为云·.net·harmonyos