多态性可以应用于 C++ 中的组合吗?
Can polymorpism be applied to composition in c++?
我正计划使用 classes 和其他 OOP 技术制作 2d 棋盘游戏 。我对 多态性 了解一点,想知道 多态性 中使用的技术是否可以将职责委托给 children class 基础 class 可通过 组合应用。
[已编辑]
一个棋盘 players.I 想要多态调用两个玩家定义的方法函数 move 而不必说 player1.move(), player2.move()
可以实现,你的例子是什么?
前言
不要迷失在设计模式或设计技术中。这个问题看起来像一个 XY 问题。总是退后一步,考虑你想要实现的目标。
目标
要求双方玩家移动的单个呼叫。
TL;DR
如果没有其他背景,我会说直接打电话给他们!
说明
总的来说:
- 一个棋盘上总是有两个棋手。 (除非你正在设计专门的规则)
- 国际象棋流程始终以循环方式运行(首先,然后是第二个,然后重复)。
那么国际象棋流程控制器调用两个玩家以固定顺序移动有什么问题?
如果应用多态性来替换以下代码,您会得到什么?
void begin_round(){
player1.move();
player2.move();
}
你可以通过移动来节省两行字...嘿等等!这就是 begin_round()
所做的!
多态性方法并没有节省任何东西,反而增加了系统的复杂性,这对系统设计来说是一个不好的迹象。
大多数时候,尽可能愚蠢的设计比复杂的方法要好,除非这种设计可以节省大量的维护或开发资源。如果一个设计不能节省任何东西,那么除非它是必须的,否则不要使用它。
其他
组合在您的案例中很常见,因为 game
是 a board and two players.
的组合
我正计划使用 classes 和其他 OOP 技术制作 2d 棋盘游戏 。我对 多态性 了解一点,想知道 多态性 中使用的技术是否可以将职责委托给 children class 基础 class 可通过 组合应用。
[已编辑] 一个棋盘 players.I 想要多态调用两个玩家定义的方法函数 move 而不必说 player1.move(), player2.move()
可以实现,你的例子是什么?
前言
不要迷失在设计模式或设计技术中。这个问题看起来像一个 XY 问题。总是退后一步,考虑你想要实现的目标。
目标
要求双方玩家移动的单个呼叫。
TL;DR
如果没有其他背景,我会说直接打电话给他们!
说明
总的来说:
- 一个棋盘上总是有两个棋手。 (除非你正在设计专门的规则)
- 国际象棋流程始终以循环方式运行(首先,然后是第二个,然后重复)。
那么国际象棋流程控制器调用两个玩家以固定顺序移动有什么问题?
如果应用多态性来替换以下代码,您会得到什么?
void begin_round(){
player1.move();
player2.move();
}
你可以通过移动来节省两行字...嘿等等!这就是 begin_round()
所做的!
多态性方法并没有节省任何东西,反而增加了系统的复杂性,这对系统设计来说是一个不好的迹象。
大多数时候,尽可能愚蠢的设计比复杂的方法要好,除非这种设计可以节省大量的维护或开发资源。如果一个设计不能节省任何东西,那么除非它是必须的,否则不要使用它。
其他
组合在您的案例中很常见,因为 game
是 a board and two players.