0

我正在创建一个计算器类,我希望将来能够扩展它。我无法决定是否应该让未来的类将其子类化,或者是否应该让每个扩展成为一个新类别。哪个是更好的选择?

如果我想在将来添加它,我无法决定扩展这个计算器类的最佳方式。我应该让每个用户将其子类化,还是添加他们想要添加的一类方法。

我想做的是,如果用户想要定义一个新操作,比如“+*”,他们可以在一个新类别中定义它并给我一个选择器,这样我就可以将所有操作存储在 Dictionary 中并选择要计算的方法结果。

例如,

SEL method = NSSelectorFromString ( @"plusTimesWithArgA:andArgB:"; );

[self performSelector:@selector(method) withObject:operandA withObject:operandB];

4

1 回答 1

2

我建议使用访客模式。子类化是最紧密的耦合形式。扩展类会带来覆盖现有方法的风险并产生大量耦合。

使用 Visitor 模式,您可以拥有一个方法,该方法采用应该具有“操作”方法的对象的 id。只要它接受输入并返回结果,它就可以以任何方式操作。这意味着您可以在不了解计算器类的其余部分的情况下实现无限的操作。

于 2012-04-22T01:21:21.097 回答