An application framework allows you to
inherit from a class or set of classes and create a new application, reusing
most of the code in the existing classes and overriding one or more methods in
order to customize the application to your needs. A fundamental concept in the
application framework is the Template Method which is typically hidden
beneath the covers and drives the application by calling the various methods in
the base class (some of which you have overridden in order to create the
application).
Add Comment
For example, whenever you create an
applet youre using an application framework: you inherit from
JApplet and then override init( ). The applet mechanism
(which is a Template Method) does the rest by drawing the screen,
handling the event loop, resizing, etc.
Add Comment
An important characteristic of the
Template Method is that it is defined in the base class and cannot be
changed. Its sometimes a private method but its virtually
always final. It calls other base-class methods (the ones you override)
in order to do its job, but it is usually called only as part of an
initialization process (and thus the client programmer isnt necessarily
able to call it directly).
Add Comment
#: c03:TemplateMethod.py # Simple demonstration of Template Method. class ApplicationFramework: def __init__(self): self.__templateMethod() def __templateMethod(self): for i in range(5): self.customize1() self.customize2() # Create a "application": class MyApp(ApplicationFramework): def customize1(self): print "Nudge, nudge, wink, wink! ", def customize2(self): print "Say no more, Say no more!" MyApp() #:~
The base-class constructor is
responsible for performing the necessary initialization and then starting the
engine (the template method) that runs the application (in a GUI
application, this engine would be the main event loop). The client
programmer simply provides definitions for customize1( ) and
customize2( ) and the application is ready to run.
Add Comment
Well see Template Method
numerous other times throughout the book.
Add Comment