解释我的问题:

类别:玩具

特点1:说话像男性

特性2:像女性一样说话

我可以在运行时更改Toy的行为(特征),以便有时相同的对象说话像男性,而有时相同的对象说话像女性吗?

我想在运行时更改口语行为。

最佳答案

Scala确实不这样做。有凯文·赖特(Kevin Wright)的autoproxy插件可以做到这一点,您可以实例化和使用任何一个特征进行对象化,而该特征不属于基类。

我个人认为,尝试以这种方式完成任务与Scala背道而驰:很难并且容易卡住。最好设计一个不需要这种东西的解决方案-实际上,Scala粒度更倾向于功能,后者将重点放在所有不变的事物上,并通过计算将一个对象替换为一个新对象。

关于design-patterns - 我们可以在运行时为scala类分配/更改特征吗?如何-任何示例代码?像策略模式(四个设计模式的帮派),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11054299/

10-11 04:49