【发布时间】:2014-09-30 07:03:46
【问题描述】:
我现在的类设计是这样的(我已经复制了类层次结构和函数调用。):
Helper* HelperFactory::create(const Advice& advice, const Handler& ah)
{
Helper* result = 0;
switch(advice.getType())
{
case ONE:
case TWO:
{
if(advice.isTradeAdvice())
result = new SimpleHedgeHelper(advice, ah);
else
result = new SimpletradeHelper(advice, ah);
break;
}
case THREE
case FOUR:
case FIVE:
{
if(advice.isTradeAdvice())
result = new ComplexTradeHelper(advice, ah);
else
result = new ComplexHedgeHelper(advice, ah);
break;
}
case SIX:
{
if(!advice.getMsgID())
{
if(advice.isTradeAdvice())
result = new SimpleTradeHelper(advice, ah);
else
result = new SimpleHedgeHelper(advice, ah);
break;
}
else
{
if(advice.isTradeAdvice())
result = new ComplexRateHelper(advice, ah);
else
result = new ComplexHedgeHelper(advice, ah);
break;
}
}
}
我正在尝试用一些基于模板的策略工厂来替换这个逻辑。我之前没有设计过任何基于 plicly 的课程 有人可以建议应该如何设计吗?
【问题讨论】:
-
[OT]:最好返回
std::unique_ptr<Helper>。 -
@TemplateRex 喝杯咖啡再考虑一下 ;)
-
@Quentin 啊,我的错,那些该死的 CamelCase 名字。