Toolkits and Frameworks
Here are some notes I sketched out in the mid-1990s.
Classes of Software
Three broad classes of software:
- Application Programs
- Toolkits
- Frameworks
Application Programs
- You know what an application program is.
- When writing one, you focus on internal reuse, maintainability,
and extension.
Toolkits
- A toolkit is probably just an oo way to say "library".
- Could be a class library or a component library.
- Toolkits are all about code reuse between applications.
- Different applications can use the same toolkit.
- Good toolkits are pretty general, not application-specific at all.
Frameworks
- A framework is pretty-much the structure of an application.
- Usually implemented as a set of cooperating classes making up
a reusable design for a specific class of software.
- The framework "dictates the architecture" of your
application.
- You build an application by filling in the holes in the framework
- Frameworks encourage plug-ins.
- Frameworks emphasize design reuse over code reuse.
- In a way, this is kind of inverting the usual relationship.
between the application and the software on which it's based.
Applications call toolkits but frameworks call applications.
Differences between design patterns and frameworks
- Design patterns are more abstract than frameworks.
- Design patterns are smaller architectural elements than
frameworks.
- Design patterns are less specialized than frameworks.