Professional PHP

PHP Programming, Web Development, PHP Advocacy and PHP Best Practices.
« Podcast interview with Andi Gutmans
Hump Day Blues »

The Evolution of Design Patterns

January 31st, 2006

Rebecca Wirfs-Brock suggests that it may be time for the GoF Design Patterns book to be refreshed. She points out that the C++ and graphics programming examples may be less relevant to today’s C# and Java programmers. She implies that state of the art has advanced in the twelve years since the book was written. She also suggests that the GoF authors may have made some of the wrong tradeoffs when they specified some of the patterns.

I know I would like to see an update to this groundbreaking work with more modern interpretations of what have become the canonical patterns.

Rebecca talks about how the interface type has come to replace the C++ abstract class. One area that I am interested in is how Duck typing may replace the interface construct in many of the classic patterns. I’m not sure that patterns intended for statically typed languages such as C++ and java necessarily have the same implementation in dynamically typed languages, such as smalltalk, Ruby and of course, PHP.

For the last few weeks, I’ve been doing an interesting educational exercise. I’ve been simultaneously reading Design Patterns, Refactoring, Refactoring to Patterns, and Agile Software Development. I’m finding the cross-referencing between each of these highly complementary books to be be educational. I’m hoping to add Design Patterns Smalltalk Companion and PHP|Architect’s Guide to PHP Design Patterns (Jason Sweat’s book) to get a more dynamic perspective in the mix. This is my reading project for the next few months.

That 10 years after first reading the Design Patterns book, i am still studying from it shows how much of a classic this book has become.

categories PHP, Agile Methods, Software Design
tags books, design patterns, dynamic typing

Related Posts

  • Harry Fuecks, PHP Patterns and Dynamically Typed
  • A Comparison of the PHP and Java Job Markets
  • Design Eye for the Usability Guy
  • API Design
  • Delicious Outage Link Dump
You can leave a response, or trackback from your own site.

3 Responses to “The Evolution of Design Patterns”

  1. #1 Alex Knaub responds...
    January 31st, 2006 at 3:16 pm

    Design Patterns are workarounds for broken languages like Java and, sorry, PHP. Have a look at http://www.norvig.com/design-patterns/ppframe.htm and http://www.sitepoint.com/blogs/2006/01/16/design-patterns-in-dynamic-programming/

    In Smalltalk, Lisp, and Ruby you don’t need any Patterns, they are in the language.

    In PHP you cannot implement a Factory-Pattern (http://blog.joshuaeichorn.com/archives/2006/01/09/zactiverecord-cant-work/) you *must* use Java-like workarounds (http://www.phppatterns.com/docs/design/the_factory_method)

  2. #2 Anon responds...
    March 10th, 2006 at 2:39 am

    simply put you cannot change design patterns (GoF) as to do so would completely negate the knowledge that this book gives you on this subject.

    no one can fault the book, past or present so why ruin an enjoyable read?

  3. #3 Jack Johnson responds...
    April 13th, 2007 at 9:15 am

    I also like using php design patterns. Here is a new site, that I found: http://php-design-patterns.com

    Check it out, it may also be of interest.

Leave a Reply

XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <code> <em> <i> <strike> <strong>

code: use [code=php][/code].

Comment Preview

  • Search

  • Subscribe

    Subscribe All Posts
    Subscribe All Comments
    Subscribe All Bookmarks
    Subscribe with Bloglines Subscribe with My Yahoo Add to netvibes Subscribe in NewsGator Online Subscribe with Google feed reader
  • Share This

  • Categories (Home)

    • Agile Methods (14)
    • Mac (14)
    • Misc (16)
    • Open Source (14)
    • PHP (93)
    • Software Design (27)
    • Usability (14)
    • WACT (7)
    • Web Design (20)
  • Recent Comments

    • PHP Coding Standards  6
      3123, Jack Johnson, Ignatius [...]
    • Expert and Novice Programmers  13
      Ben W, flj, chris web developer [...]
    • Working with PHP 5 in Mac OS X 10.5 (Leopard)  83
      e-okul, Luis Oscar Cruz, xentek [...]
    • How to Transfer Mac OS X Application Data between Computers  34
      Khaled bin Alwaleed, Oscar, TeeJay [...]
    • Sarah Snow Stever  23
      Snowcore, ennah, Philippine Website Developers [...]
    • PHP Development From Java Architects Eye  9
      Bobrila, FelhoBacsi, Angsuman Chakraborty [...]
    • Improved Error Messages in PHP 5  9
      ennah, Khumaer, retry [...]
    • The value of MVC  7
      Vulchak, อะไหล่แอร์, Derek Scruggs [...]
    • Why PHP is easier to learn than Java  13
      , , WTF [...]
    • goto in PHP  38
      Goldilocks, , SFM [...]
    • Keywords and Language Simplicity  6
      Handy, minikperi, PHP Encoder [...]
  • Pages

    • Tags
  • Recent Posts

    • Sarah Snow Stever
    • Benchmarking PHP’s Magic Methods
    • The Endpoints of the Scale of Stupidity on Video
    • Working with PHP 5 in Mac OS X 10.5 (Leopard)
    • Keywords and Language Simplicity
    • Improved Error Messages in PHP 5
    • Michigan Taxes Graphic Design Services
    • Ruby versus PHP or There and Back Again
    • Mighty Mouse Kryptonite and Exceeding Expectations
    • reCAPTCHA - Combining Distributed Problem Solving with a Web Service
  • Archives

    • 2007: Jan Feb Mar Apr May Sep Oct Nov
    • 2006: Jan Feb Mar Apr May Jun Jul Oct Nov Dec
    • 2005: Jan Feb Mar Apr May Sep Oct Nov Dec
    • 2004: Apr May Jun Jul Aug Sep Oct Nov
  • Menu

    • Register
    • Login