In the last part, we finally broke out the caching and data access concerns from our original class. The series so far includes: Separation of Concerns - how not to do it Separation of Concerns by example: Part 1 - Refactoring away from static class Separation of Concerns by example: Part 2 - Specialized...