Interface Oriented Design

... Show More

Interface Oriented Design focuses on an important, but often neglected, aspect of object-oriented design. You'll learn by pragmatic example how to create effective designs composed of interfaces to objects, components and services. You'll see techniques for breaking down solutions into interfaces and then determining appropriate implementation of those interfaces to create a well structured, robust, working program.

Interface Oriented Design explores how to develop robust, reliable software as a collection of interfaces that interact with each other.

You'll learn what polymorphism and encapsulation really mean, and how to use these ideas more effectively. See how to create better interfaces using agile development techniques, and learn the subtle differences between implementing an interface and inheriting an implementation. Take a fresh, modern view of Design By Contract and class responsibilities. Understand the basis of a service-oriented architecture, including stateful versus stateless interfaces, procedural versus document models, and synchronous versus asynchronous invocations.

Learn about the most useful patterns, including Proxy, Facade, Adapter, and Factory, as well categories of interfaces including service providers, information holders, and external world interfaces.

If you want to be a more effective programmer and create better software, you need Interface Oriented Design.

240 pages, Paperback

First published January 1,2006

About the author

... Show More
A principal consultant with Pugh-Killeen Associates since 1982). His professional interests are development processes (especially agile ones), object-oriented design, and security. He has been involved with projects ranging from satellite tracking to goat serum process control to stock portfolio analysis. He's ambidexterous - developing for both Windows and UNIX/Linux.


Community Reviews

Rating(4.3 / 5.0, 4 votes)
5 stars
1(25%)
4 stars
3(75%)
3 stars
0(0%)
2 stars
0(0%)
1 stars
0(0%)
4 reviews All reviews
April 17,2025
... Show More
This is a FANTASTIC book. But it doesn't seem that way when you first start reading it. The beginning conceptual chapters are rather basic, though I suspect that many of the blase reviews are written by people with many years in the field who don't get maximum value out of them. The first 2 sections are actually optimal for developers just out of school/just beginning to write "enterprise grade systems" within their first 6-18 months. For people with more experience, it will be mostly review...though the sections on stateful versus stateless interface design are interesting.

Where this book really shines, however, is the "Interfaces in the Real World" section. The systems built have been described by some reviewers as "toys"...and yet I've found myself implementing some version of a "WebConglomerator" or "Link analyzer" in company settings since 2006. I'm actually implementing a glorified Service Registry right now that has absolutely stymied some of my colleagues to design...and this book makes it look ridiculously easy.

What makes these examples truly compelling, however, is that they are CLEAN. These designs are FANTASTIC. If you really know how to think in interfaces, it becomes obvious to you how you can design these systems using TDD/BDD and implement in such ways that it's easy to switch from a Gson-based parser to Jackson, XML to YAML, etc etc. These are actually fantastic case studies in how to build frameworks masquerading as toy problems.

The last chapter on Design Patterns is succinct, but far more interesting than superficially thought. Encapsulating native collections with your own types is something developers everywhere just don't do enough of, and the benefits become fantastically clear with the BUILDER-esque chaining implementing AND and "merge" implementing OR criteria. I had never even thought of something like that. The treatment of FACTORY METHOD and discussion of PROXY vs. DECORATOR does a nice job of showing different options, and reinforcing the differences between the intents in the patterns.

...basically, anyone trying to be a Real Software Architect should read this short book on a Saturday morning, then think hard about it. It's got a lot of great content, in a very digestible and well-written format.
April 17,2025
... Show More
The book explores different ideas on how to structure your code. While some chapters are interesting, the information provided is repetitive and there are parts that are irrelevant. I'll definitely go back to some parts of this book that provide good advice but i won't read it again or recommend to anyone.
April 17,2025
... Show More
The book didn't really teach me anything I didn't already know. In fact, I'm not sure how well it would have taught me had I not already understood all the concepts beforehand.
April 17,2025
... Show More
A little dated, in terms of specific implementation technologies (CORBA, anyone?), which should be expected for a tech book published back in 2007, but the principles are still perfectly applicable to the development challenges of 2021.

In fact, instead of being a distraction, I would say that seeing the mapping of these principles to earlier technology implementations is actually helpful, in the sense that it really points out that the high-level concepts can outlive the implementation choices of a given time period.
Leave a Review
You must be logged in to rate and post a review. Register an account to get started.