论坛首页 入门技术论坛

模式新手,向高手请教。策略模式这样用对吗?

浏览 6197 次
该帖已经被评为新手帖
作者 正文
   发表时间:2007-05-29  
不错,这是strategy的应用,不过我想提醒jorwen_fang朋友的是你写的这一段:
jorwen_fang 写道
    //此时根据不同confirmFlag选择不同策略
    private void initStrategy()
    {
        if ( confirmFlag.equals( "0" ) )
        {
            strategy = new StrategyConfirmFailure();
        }
        else if ( confirmFlag.equals( "1" ) )
        {
            strategy = new StrategyConfirmSuccess();
        }
        else if ( confirmFlag.equals( "4" ) )
        {
            strategy = new StrategyAlreadyRepeal();
        }
        else if ( confirmFlag.equals( "9" ) )
        {
            strategy = new StrategyUnconfirm();
        }
    }
}


熟悉设计模式的人一看就知道,这是一个工厂模式的典型应用,也就是说,你一看到这样的代码就应当联系到工厂模式。建立一个工厂,将StrategyConfirmFailure、StrategyConfirmSuccess等都放进去,然后代码可以改为:
strategy = (Strategy)StrategyFactory.getBean(confirmFlag);

这样才可以扩展confirmFlag的状态而又符合OCP原则。
0 请登录后投票
   发表时间:2007-05-31  
感谢楼上给的意见
0 请登录后投票
论坛首页 入门技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics