锁定老帖子 主题:模式新手,向高手请教。策略模式这样用对吗?
该帖已经被评为新手帖
|
|
---|---|
作者 | 正文 |
发表时间: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原则。 |
|
返回顶楼 | |
发表时间:2007-05-31
感谢楼上给的意见
|
|
返回顶楼 | |