Design pattern question

Karl Schmid schmid at ice.mpg.de
Wed Aug 21 09:20:20 CEST 2002


Hi,

I would like to separate an abstraction from its implementation. I think 
this is called the Bridge pattern by Gamma et al. (or at least it is a part 
of a bridge pattern).

In particular, I would like to assemble a set of DNA sequences and have the 
option to chose among different assembly algorithms. I am not sure what the 
best way to do this would be:


class SequenceAssembler:
        
    def __init__(self,assembler_type):

        if assembler_type == 'cap3':
            # What should I do here?
        elif assembler_type == 'phrap':
            # What should I do here?

    def save_sequences():
        pass

class Cap3Assembler(SequenceAssembler):

    def run_assembler():
        # Cap3 specific instructions
        pass

class PhrapAssembler(SequenceAssembler):

    def run_assembler():
        # Phrap specific instructions
        pass    

Now I would like to instantiate the abstract class, but to obtain an 
instance of either the Cap3Assembler or PhrapAssembler class depending on 
the assembler_type variable.

>>> assembler = SequenceAssembler(assembler_type)

Is this possible? 

Thank you in advance.

-- Karl Schmid




More information about the Python-list mailing list