我写(df.Var2.diff() != 0).cumsum()
,为了简单起见,负责添加/删除/保留一组电影。电影实例有许多参数,如长度,颜色,类型等。class Movies
还应允许用户拨打Movies
,这将返回'最佳' 集中的电影。
假设我已经有两种选择最佳电影的方式(一种基于最高IMDB排名,另一种基于烂番茄)但我想允许用户添加新类型的决策算法(例如基于长度+例如,一年中的季节)。允许这样做的最佳设计是什么?
我的想法:
Movie bestMovie()
继承并覆盖bestMovie()。感觉就像是对继承的错误使用。Movies
的界面并实施MovieSelection
。然后,用户可以添加class IMDBMovieSelection
。 class SeasonMovieSelection
然后,Ctor将Movies
作为它将在MovieSelection
中使用的参数获取 - 为#34;信号发送"创建对象感觉不对。我主要对象的方法bestMovie()
时使用委托/匿名函数(类似于我对bestMovie(<anonymous function>)
的使用) - 感觉不可扩展且难以维护,特别是如果函数很复杂的话。非常感谢这里的任何见解。我确定我不是第一个面对这个问题的人,但我不知道究竟要搜索什么。
由于
答案 0 :(得分:1)
我同意这不是继承的好选择(#1)。这听起来像是strategy pattern的一个很好的用例,它基本上只是意味着将算法封装在一个类中,以便可以随时换出。因此,也许您的Movie类使用默认策略(例如,最高IMDB评级)进行初始化,但可以根据用户选择动态更改。这最接近您的选项#2。使用基本上只是将消息中继到另一个对象的方法会让人觉得奇怪,但这会给你提供比继承更好的灵活性。