我在类似情况下使用的一种可能的解决方案是适配器设计模式(所引用的页面包含许多示例代码)。可能与委托设计模式结合使用,可以轻松访问主要方法。
基本上,您将交易者功能划分为多个不同的区域-例如,价格,风险,验证的处理都可能是不同的区域。然后,对于每个区域,您可以实现一个单独的类层次结构,以不同的所需变体形式处理确切的功能-所有这些都是每个区域的通用接口。然后,将主要的Trader类简化为最基本的数据,并引用许多处理程序对象,可以在需要时构造这些对象。喜欢
interface IPriceCalculator {
double getPrice(ITrader t);
}
interface ITrader {
IPriceCalculator getPriceCalculator();
}
class Tracer implements ITrader {
private IPriceCalculator myPriceCalculator = null;
IPriceCalculator getPriceCalculator() {
if (myPriceCalculator == null)
myPriceCalculator = PriceCalculatorFactory.get(this);
return myPriceCalculator;
}
}
这种方法的一个主要优点是,例如价格和价格上涨的可能组合被完全分开,因此可以根据需要进行组合。对于大多数编程语言的单线程继承而言,这相当困难。使用哪种组合的决定甚至可以在很晚的时候得出:-)
我通常尝试使适配器类(例如上述子类)保持IPriceCalculator
无状态。也就是说,这些类应尽可能不包含任何本地数据,以减少必须创建的实例数。因此,我通常在所有方法中都将经过修改的主要对象作为参数提供-像getPrice(ITrader)
上面一样。