Guest User

Untitled

a guest
Jun 24th, 2018
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.67 KB | None | 0 0
  1. public class ConcreteStrategy0 {
  2. public void doStrategy(SomeType someData) {
  3. switch( somefunc(someData ) {
  4. case 0: ConcreteStrategy1.singleton.doStrategy(someData); break;
  5. case 1: ConcreteStrategy2.singleton.doStrategy(someData); break;
  6. default: ConcreteStrategy3.singleton.doStrategy(someData); break;
  7. }
  8. }
  9.  
  10. new ConcreteStrategy0().doStrategy(someData);
  11.  
  12. // Inject strategy: Delegate object creation to a factory
  13. new ConcreteStrategy0().doStrategy(StrategyFactory.Create(), someData);
  14.  
  15. // And update "doStrategy" to,
  16. public void doStrategy(IStrategy strategy, SomeType someData)
  17. {
  18. strategy.singleton.doStrategy(someData);
  19. }
  20.  
  21. // OR Let the strategy do stuff instead
  22. StrategyFactory.Create().doStrategy(someData);
  23.  
  24. <bean id="client" class="...">
  25. <property name="strategy" ref="dispatcherStartegy"/>
  26. </bean>
  27. <bean id="dispatcherStartegy" class="...">
  28. <property name="strategies">
  29. <map>
  30. <entry key="0" ref="concreteStrategy1"/>
  31. <entry key="1" ref="concreteStrategy2"/>
  32. </map>
  33. </property>
  34. <property name="fallbackStrategy" ref="concreteStrategy3"/>
  35. </bean>
  36. <bean id="concreteStrategy1" ... />
  37. <bean id="concreteStrategy2" ... />
  38. <bean id="concreteStrategy3" ... />
  39.  
  40. class Client {
  41. Strategy strategy;
  42. public void setStrategey(Strategy strategy {... }
  43. public void doSomething(...) {
  44. ...
  45. strategy.doStrategy(...);
  46. ...
  47. }
  48. }
  49.  
  50. class DispatcherStrategy implements Strategy {
  51. Map<Integer,Strategy> strategies;
  52. Strategy fallbackStrategy;
  53. ... getters, setters ...
  54. public void doStrategy(...) {
  55. Strategy s = strategies.get(keyFromArguments);
  56. if ( s==null ) {
  57. s = fallbackStrategy
  58. }
  59. s.doStrategy(...)
  60. }
  61. }
Add Comment
Please, Sign In to add comment