Builder Pattern

A

Alex Martelli

Jason said:
Hi

I really need an example of a builder pattern in python, the closest I
could find to something resembling builder was on this thread...
http://groups.google.co.uk/group/it.comp.lang.python/browse_thread/threa
d/44f79c1def2583ca/200adefeefa5f3fa?lnk=st&q=design+pattern+builder+pyth
on+-build&rnum=25#200adefeefa5f3fa

Unfortunately I can't read the discussion it's possibly in Spanish.

No, the leading 'it' in the newsgroup name means 'italian'. I was one
of the discussants.
Does anyone know of a builder example for python? Thanking you in
advance for your help.

The *example* is right there, e.g. at
<http://groups.google.co.uk/group/it.comp.lang.python/msg/4edfee13b6fb51
6f> for the Python translation of the example found at a URL quoted in
the same post. If you want an EXAMPLE, there it is -- it's all code, no
comments, so the fact that the following discussion is in Italian should
be irrelevant, no?

What the following discussion says is that the C++ -> Python
transliteration is totally trivial and obvious and berates the original
requestor for making me waste 10 minutes to provide it.


Alex
 
P

Paddy

What the following discussion says is that the C++ -> Python
transliteration is totally trivial and obvious and berates the original
requestor for making me waste 10 minutes to provide it.

Thanks for the giggle :)
 
J

Jason

I have converted another example of strategy which I prefer to the 2
described earlier, here it is:

class FindMinima:
def algorithm(self):raise NotImplementedError


class LeastSquares (FindMinima):
def algorithm(self,line):
return (1.1,2.2)


class NewtonsMethod (FindMinima):
def algorithm(self,line):
return (3.3,4.4)

class Bisection (FindMinima):
def algorithm(self,line):
return (5.5,6.6)

class ConjugateGradient (FindMinima):
def algorithm(self,line):
return (3.3,4.4)



class MinimaSolver: # context class
strategy=''
def __init__ (self,strategy):
self.strategy=strategy

def minima(self,line):
return self.strategy.algorithm(line)

def changeAlgorithm(self,newAlgorithm):
self.strategy = newAlgorithm

def test():
solver=MinimaSolver(LeastSquares())
print solver.minima((5.5,5.5))
solver.changeAlgorithm(Bisection())
print solver.minima((5.5,5.5))
test()
 
P

Peter Otten

I have converted another example of strategy which I prefer to the 2
described earlier, here it is:

class FindMinima:
        def algorithm(self):raise NotImplementedError

When most of your code does nothing in a pompous way that is a sure sign
that you are heading in the wrong direction. Here's a translation into
python:

def least_squares(line):
return 1.1, 2.2

def newtons_method(line):
return 3.3, 4.4

def bisection(line):
return 5.5, 6.6

def conjugate_gradient(line):
return 3.3, 4.4

def test():
solver = least_squares
print solver((5.5,5.5))
solver = bisection
print solver((5.5,5.5))

test()

Peter
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,954
Messages
2,570,116
Members
46,704
Latest member
BernadineF

Latest Threads

Top