# this line specifies the backend class, but # we don't need to know that, to us, its just # a parameter my $x = Thing->new( backend => 'A' ); # here we are accessing the backend object # and calling do on it. # This to me is the interface for creating the # backend object (the "backend" method). $x->backend->do(); #### $x->backend->new()->do(); #### $x->do_backend(); #### +-------------+ +------------+ | Composition |<>---------------------->| Compositor | +-------------+ +------------+ | Traverse() | | Compose() | | Repair() | +------------+ +------^------+ | | +---------------+-----+ | | | _________|________________ +------------------+ +---------------+ | compositor->Compose() \| | SimpleCompositor | | TeXCompositor | +-------------------------+ +------------------+ +---------------+ | Compose() | | Compose() | +------------------+ +---------------+