我有一类创建一个对象(一个盒子),并包含重新排列其内容的策略。我认为这应该是两个类,但是,由于我通常使用FP,所以我不确定如何使box class
与包含重新排列框内容的策略的solver class
一起工作。
box
可以是solver
的子类吗?似乎不正确。如果没有,我如何使两者一起工作?
class Box(object):
def __init__(self, contents, size):
self.contents = contents
self.size = size
def fillBox (self, contents):
pass
class Solver(object):
def __init__(self, boxObject, strategy):
self.box = boxObject
self.strategy = strategy
if self.strategy == strategy1:
self.strategy1()
def strategy1 (self):
// execute some algorithm manipulating the contents of the box
答案 0 :(得分:3)
通常问自己的问题是:“ ____是____吗?”其中第一个空白是建议的子类,第二个空白是建议的超类,在这种情况下,“ Box
是Solver
吗?”如果答案是否定的(这里似乎是这种情况),则继承是不合适的。使Solver
接受Box
作为成为实例属性的参数的方法是正确的处理方法。