Microservice: In-Memory Repository Adapter

Oh, Were You Using That? Once there is enough business logic in place, the development team can start implementing various integration and adapter layers. Nearly all web applications will, at some point, require a persistence layer. So a natural first place to look is any repository layer. As stated at the very beginning of this … Continue reading Microservice: In-Memory Repository Adapter

Design Principles: Dependency Inversion Principle

Flip It and Reverse It The Dependency Inversion Principle is an object-oriented software design principle that easily has the most far-reaching implications across both the underlying code and overall architecture of a software application of all design principles. This post is part of a series on software design principles. As with all design principles, this … Continue reading Design Principles: Dependency Inversion Principle

Design Principles: Interface Segregation Principle

Gotta Keep 'em Separated The unfortunately-named Interface Segregation Principle is an abstraction-level corollary to the Single Responsibility Principle. Like the SRP, this principle seeks to limit the burden on consumers and implementers by focusing the exposed API of an interface. This post is part of a series on software design principles. As with all design … Continue reading Design Principles: Interface Segregation Principle

Design Principles: Liskov Substitution Principle

Why Won't this CuboidCylinder Fit?!?! Like Bertrand Meyer's Open/Closed Principle, the Liskov Substitution Principle is an object-oriented software design principle that is unfortunately poorly understood within the industry. It seeks to deal with code quality issues arising for poor use of inheritance mechanisms in object-oriented languages. This post is part of a series on software … Continue reading Design Principles: Liskov Substitution Principle

Design Principles: Single Responsibility Principle

Laser-Focused Coding The Single Responsibility Principle is fairly self-explanatory: don't try to do more than one thing at a time. The goal is to improve cohesiveness of software by decoupling ill-suited components. Improving cohesion by reducing coupling may seem a bit counter-intuitive until you look at the meanings of those words from the perspective of … Continue reading Design Principles: Single Responsibility Principle

Design Principles: Open/Closed Principle

Object-Oriented Huh? The Open/Closed Principle is one of the least well-understood object-oriented software design principles in the industry. It deals primarily with one of the three fundamental pillars of object oriented design in an attempt to foster the creation of readily reusable code. This post is part of a series on software design principles. As … Continue reading Design Principles: Open/Closed Principle

Design Patterns: The Adapter Pattern

Adapting Dependencies to an Interface The Adapter Pattern is one of the fundamental building blocks of software engineering. It allows two pieces of software to interact by adapting each of their public interfaces to the other's. Used properly, this serves to keeps those two pieces of code independent and decoupled, which in turn promotes high … Continue reading Design Patterns: The Adapter Pattern