Encapsulate what changes
A factory pattern could be used to encapsulates job creation. The factory could be for each specific interface -e.g SpawnableJobs. The structure now takes the following form.
Don’t Repeat Yourself (DRY)
After applying the other principles – I cannot see any duplication of functionality at this time.
Don’t look for things. Ask for things. (Dependency Injection)
This is already achieved by the implantation of the factory method for creating Jobs. It is also done via injecting the numbering scheme at database creation.
Favor Composition over Inheritance
Composition has already been used for the implementation of SpawnableJob.
Program to the Interface not to the Implementation & Delegation Principles
This was covered when jobman was reviewed for Single Responsibility Prinicple and Interface Segregation Principle.
Conclusions
This was a useful exercise and will allow some of the work I did on JobMan to be reused in other projects. I will move the GUI code to a separate repository which will be placed on the Sourceforge page and the projects page of this website.