In Partial Fulfillment of the Requirements for the Degree of
Master of Science
Will defend his thesis
Object-oriented software architectures for large-scale problems can become very structurally complex when the principles of object-oriented design are diligently applied. Specifically, the Dependency Inversion Principle calls for a prohibition on references between concrete classes. This precipitates the extensive use of abstract interfaces for references and factories for object creation. This thesis walks through the refactoring of an object-oriented architecture implemented in C# to illustrate how this complexity arises, and then applies the use of service containers to simplify the structure. The Service Container concept is extended beyond widely-scoped services to store any object relevant to a smaller context, and then further expanded to expose factory services in such a way that factory classes can be replaced by factory closures. The end result of these additions and optimizations is a pragmatic, optimized, low-cohesion, object-oriented architecture uncompromisingly compliant with object-oriented design principles.