Nov-30-2018, 06:00 AM
Hi There,
I need your help to understand how to use Strategy pattern properly in Python.
Indeed i don't know how to transfer a result coming from a strategy to another.
Structure is : (files are at the bottom of this post)
Running the app below, App.py is giving me the following :
Should i declare a getter/setter within app class but how to access it ?
Any other way ?
Regards,
Pierre
Filename : App.py
I need your help to understand how to use Strategy pattern properly in Python.
Indeed i don't know how to transfer a result coming from a strategy to another.
Structure is : (files are at the bottom of this post)
- App.py
- AStrategyAbstract.py
- BStrategyAbstract.py
- CStrategyAbstract.py
Running the app below, App.py is giving me the following :
A1 Strategy applied Give me your name Foo ! B3 Strategy applied C2 Strategy applied ___ A2 Strategy applied Give me your name Bar ! B1 Strategy applied C2 Strategy appliedI would like to get the following, but I don't understand how.
Should i declare a getter/setter within app class but how to access it ?
Any other way ?
A1 Strategy applied Give me your name Foo ! B3 Strategy applied Name given was Foo! C2 Strategy applied ___ A2 Strategy applied Give me your name Bar ! B1 Strategy applied Name given was Bar ! C2 Strategy appliedCan please someone point me on the right direction ?
Regards,
Pierre
Filename : App.py
from AStrategyAbstract import A1Strategy,A2Strategy,A3Strategy from BStrategyAbstract import B1Strategy,B2Strategy,B3Strategy from CStrategyAbstract import C1Strategy,C2Strategy,C3Strategy a1_strategy = A1Strategy() a2_strategy = A2Strategy() a3_strategy = A3Strategy() b1_strategy = B1Strategy() b2_strategy = B2Strategy() b3_strategy = B3Strategy() c1_strategy = C1Strategy() c2_strategy = C2Strategy() c3_strategy = C3Strategy() class App(object): def __init__(self, a_strategy, b_strategy, c_strategy): self._a_strategy = a_strategy self._b_strategy = b_strategy self._c_strategy = c_strategy self.name = None def do_sth(self): self._a_strategy.do_sth() self._b_strategy.do_sth() self._c_strategy.do_sth() class AApp(App): def __init__(self): super(AApp, self).__init__(a1_strategy, b3_strategy, c2_strategy) def start(self): self.do_sth() class BApp(App): def __init__(self): super(BApp, self).__init__(a1_strategy, b1_strategy, c2_strategy) def start(self): self.do_sth() if __name__ == '__main__': myaapp = AApp() myaapp.start() print("___") mybapp = BApp() mybapp.start()Filename : AStrategyAbstract.py
import abc class AStrategyAbstract(object): __metaclass__ = abc.ABCMeta @abc.abstractmethod def do_sth(self): """Required Method""" class A1Strategy(AStrategyAbstract): def do_sth(self): print("A1 Strategy applied") print("Give me your name") name = input() class A2Strategy(AStrategyAbstract): def do_sth(self): print("A2 Strategy applied") print("Give me your name") name = input() class A3Strategy(AStrategyAbstract): def do_sth(self): print("A3 Strategy applied") print("Give me your name") name = input()Filename : BStrategyAbstract.py
import abc class BStrategyAbstract(object): __metaclass__ = abc.ABCMeta @abc.abstractmethod def do_sth(self): """Required Method""" class B1Strategy(BStrategyAbstract): def do_sth(self): print("B1 Strategy applied") class B2Strategy(BStrategyAbstract): def do_sth(self): print("B2 Strategy applied") class B3Strategy(BStrategyAbstract): def do_sth(self): print("B3 Strategy applied")Filename : CStrategyAbstract.py
import abc class CStrategyAbstract(object): __metaclass__ = abc.ABCMeta @abc.abstractmethod def do_sth(self): """Required Method""" class C1Strategy(CStrategyAbstract): def do_sth(self): print("C1 Strategy applied") class C2Strategy(CStrategyAbstract): def do_sth(self): print("C2 Strategy applied") class C3Strategy(CStrategyAbstract): def do_sth(self): print("C3 Strategy applied")