Pythonic design patterns
Bruno Desthuilliers
bdesth.quelquechose at free.quelquepart.fr
Sat Dec 6 10:08:59 EST 2008
r.grimm at science-computing.de a écrit :
> Hallo,
>> users in this forum has been kind enough to point out. Only my
>> implementations are often not that clean, and I may call things
>> something different than the normal convention, which is a source of
>> confusion for myself and others trying to communicate with me.
> I think, you should start with the classical books of Design Patterns
> to get a solid understanding and especially vocabulary to communicate
> with your coworkers. Its easier and better to say, that you will use a
> strategy pattern than to describe the architecture in many sentences
> to your partner in a ambigious way.
Indeed. But now there's the risk that coworkers implement this as:
class AbstractFooStrategy(object):
def run(self, yadda):
raise NotImplementedError
class SimpleFooStrategy(AbstractFooStrategy):
def run(self, yadda):
# code here
class Bar(object):
def __init__(self, foo_strategy):
if not isinstance(foo_strategy, AbstractFooStrategy):
raise ValueError("yadda yadda")
self.foo_strategy = foo_strategy
def do_this(self, yadda):
return self.foo_strategy.run(yadda)
b = Bar(SimpleFooStrategy())
instead of:
class Bar(object):
def __init__(self, foo_strategy):
self.foo_strategy = foo_strategy
def do_this(self, yadda):
return self.foo_strategy(yadda)
def baaz(yadda):
# code here
b = Bar(baaz)
> Thats in my opinion the first and
> the key benefit of Design Patterns.
Totally agree - at least as long as coworkers clearly understand the
difference between design and implementation.
> Speaking in the same language. The
> next step should be to apply your knowledge to your programming
> language.
Indeed !-)
> So I will recommend the classical GOF Books
<aol />
While most implementation example are way over the top in the context of
a hi-level dynamic language like Python, the GOF is one of the best book
on OO design I've ever read - if not the only that was worth reading
(disclaimer : I didn't read much dead-tree stuff on OO).
More information about the Python-list
mailing list