Winter Driving Best Books of the Month Valentine's Day Shop Learn more nav_sap_SWP_6M_fly_beacon Chi-Raq easycohice_2016 All-New Amazon Fire TV Beauty V-Day Valentine's Day Cards Knock snow out cold Amazon Gift Card Offer chiraq chiraq chiraq  Amazon Echo All-New Fire Kindle Paperwhite Prime Exclusive Savings in Video Games Shop Now SnS

Customer Reviews

4.3 out of 5 stars8
Format: HardcoverChange
Price:$28.71+ Free shipping with Amazon Prime
Your rating(Clear)Rate this item

There was a problem filtering reviews right now. Please try again later.

This is a very intersting book. While the catalogue of patterns that form the result of the research aren't in themselves mind-blowing, the analytical methods that Jason McC. Smith used to arrive at the elemental design patterns, and the methods he uses to reconstruct well-known patterns based on these, are worthy of close study. This book is aimed toward software designers, architects and should be of utmost interest to creators of code analysis tools, since this was the impetus for the author's study in the first place. Far from being 'another design patterns' book, this seeks to present a foundation for *all possible* OO design patterns. An appendix demonstrates the mathematics that should prove this claim.

To summarize the book's objective, Smith sought to derive the simplest possible language-agnostic patterns (e.g. 'extend method', 'instantiate class') from object-oriented principles as a way to use them as building blocks for recognizing larger constructs such as those presented in the well-known 'GoF' book, such as the 'Abstract Factory' or 'Visitor' patterns. The first half of the book is a friendly and entertaining guide through the author's research process in which he explains how the elemental patterns are combined. By supplementing UML with his own modelling innovations, he can deftly show how the elements interact in more complicated ways. The second half manages to not be tedious, despite it mostly being in a catalogue format similar to that used in the GoF's Design Patterns book.

Even as someone who's currently more interested in functional-language software design than object-oriented, I found this to be a fascinating and enjoyable read and I'm confident that most would agree.
0Comment23 of 24 people found this helpful. Was this review helpful to you?YesNoReport abuse
VINE VOICEon May 3, 2012
Elemental Design Patterns are the underlying core concepts of programming and software design that have remained described.

This book is a book I wish I had 15 years ago to help me put the basics of programming into their proper context. Learning how to make use of patterns over the years would have been much simpler had I read this book first.

I have listed the chapters of the book below along with the patterns in the catalog. Take a look at he names of the patterns and you can see how low level these patterns are.

Chapter 1: Introduction to Design Patterns
Chapter 2: Elemental Design Patterns
Chapter 3: Pattern Instance Notation
Chapter 4: Working with EDPs
Chapter 5: EDP Catalog
Create Object
Abstract Interface
Revert Method
Extend Method
Delegated Conglomeration
Redirected Recursion
Trusted Delegation
Trusted Redirection
Deputized Delegation
Deputized Redirection
Chapter 6: Intermediate Pattern Compositions
Fulfill Method
Retrieve New
Retrieve Shared
Object Recursion
Chapter 7: Gang of Four Pattern Compositions
7.1 Creational Patterns
7.2 Structural Patterns
7.3 Behavioral Patterns
Appendix A: Rho-Calculus

My goal with a solution's architecture is always to make it the simplest solution possible in order to maximize maintainability. That means i must accomplish providing the highest level of transparency possible. That means providing the right level of detail at the right level of abstraction. When they are used patterns allow for a common language to be used. This book provides a language to allow you to go to a lower level of abstraction getting to the core concepts of programming.

My favorite part of this book is how explicitly names and sheds light on all the logic we take for granted when we are programming. Don't however expect to breeze through this book. Although the author is bringing to light concepts that you use everyday, this is the first time you'll be thinking about them with intensity. You have to following along with the author's logical introduction throughout the first few chapters to get the why of the rest of the book.

I think the Pattern Instance Notation (PIN) and the different PINboxes is a really cool way to visually represent patterns, parts of patterns, and the associated patterns.

This thought that kept coming to mind as I read this book is "this is the way I wish I would have learned this in the beginning of my career". This is a refreshing read. It makes you think in an enjoyable way and you really do learn something of value along the way.

Anyone involved with any programming language should read this book.
0Comment28 of 31 people found this helpful. Was this review helpful to you?YesNoReport abuse
on December 26, 2012
I bought this book, thinking it would provide a very basic overview of the common design patterns in software development. What I instead found was a very difficult read that more closely resembles a scientific dissection of the building blocks of said design patterns. While the author states in the preface that he assumes you will be familiar with design patterns at least in passing, I believe the reader will be absolutely lost without a somewhat higher level understanding of design patterns. I've read through the Gang of Four's Design Patterns book and still found that this material required several reads to finally sink in (not that the Gang of Four's book was all that different, to be honest).

However, the content that is included is fascinating, if you have the patience to get through it. The Pattern Instance Notation (PIN) is a novel way to break down (or build up) design patterns from other patterns and might help

Overall, Elemental Design Patterns is an interesting book and can provide an extra foundation for your software design, but I'd probably recommend it for software engineers and not software developers (if you can define the difference between the two groups of programmers, you'll probably enjoy this book).
11 comment7 of 7 people found this helpful. Was this review helpful to you?YesNoReport abuse
on June 12, 2012
Much like Linear Algebra introduces and develops a streamlined symbology for many-equation algebra, the author here introduces 'PIN', a method of encapsulating UML and collapsing the pattern-internals to focus on the -external- connections of the patterns.

This elimination of visual complexity - while retaining the ability to 'zoom in' for the details - provides an environment better suited to actually exploring vast swaths of code in search of canonical patterns. Or antipatterns.

The author proceeds to use his SPQR mechanistic pattern-seeking code in an attempt to identify individual 'Elemental Design Patterns'. That is - the indivisible core elements of the standard higher-level design patterns. In a fashion that is programming language agnostic.

Although this work does not comprehensively explore the core canonical design patterns, it is still a solid introduction to the entire area that does not sink directly into the morass of extensive UML.
0Comment12 of 14 people found this helpful. Was this review helpful to you?YesNoReport abuse
on August 20, 2012
I nearly got lost in the theory parts of chapter 2 and 4, but wading through and taking the time to understand the ideas behind these "elemental" patterns was worthwhile upon reaching chapter 5, the pattern catalog, which constitutes the bulk of the book.

The Pattern Instance Notation (PIN) diagram introduced in Chapter 3 was very well thought out, and although seemingly somewhat off topic, I'm glad it was included. It provides a hierarchical structure, which gives a way of viewing your system at different levels of granularity. I'm interested to see if it will catch on with software architects.

The example code is in C++ and is well-formatted. Although the description of the book claims it will be part "example-rich cookbook", I'm not sure that I'd consider it to be at the cookbook level of practicality.

In the end, I think this was an effort worthy of a read by architects and developers, and I think the PIN diagram system may gain popularity, if software aimed at authoring/viewing it easily became available.
0Comment5 of 6 people found this helpful. Was this review helpful to you?YesNoReport abuse
on January 11, 2013
I bought this book as a gift for my husband, who is a professional computer programmer and university instructor, and he loves it. He says that this book defines the vocabulary and concepts that programmers use to talk about their profession.
0CommentWas this review helpful to you?YesNoReport abuse
on December 2, 2012
Great book and examples it is progressing with each chapter. I think it a good book for beginners and expart
0Comment0 of 2 people found this helpful. Was this review helpful to you?YesNoReport abuse
on May 19, 2012
A very in depth account of design patterns - not really useful for the developer looking for practical solutions to problems. Found the text very wordy. Very old language examples using C++.
11 comment6 of 24 people found this helpful. Was this review helpful to you?YesNoReport abuse