Martin Fowler has written up a really nice piece on his OOPSLA experience.
He starts off by discussing the Gang of Four Design Patterns book. There was a 'vote off the island' session which kicked off Factory Method (due to the confusion over what it means - the pattern is different to the more common usage of the term), Bridge, Flyweight, and Interpreter. Two patterns, Singleton and Chain of Responsibility, were split decisions.
What would you change from that great book?
Read more: Martin's OOPSLA 2004
-
Martin Fowler on changes to the Gang Of Four, and OOPSLA (10 messages)
- Posted by: Dion Almaer
- Posted on: November 04 2004 09:17 EST
Threaded Messages (10)
- Ch ch(x5) changes by Mark St.Godard on November 04 2004 09:43 EST
- Ch ch(x5) changes by Burek Jogurt on November 04 2004 11:28 EST
-
Why flyweight was voted off by Toby Reyelts on November 06 2004 01:14 EST
-
WTF? by James Folsom on November 07 2004 10:05 EST
- WTF? by Udayan Patel on November 09 2004 09:52 EST
-
WTF? by James Folsom on November 07 2004 10:05 EST
-
Why flyweight was voted off by Toby Reyelts on November 06 2004 01:14 EST
- Ch ch(x5) changes by Burek Jogurt on November 04 2004 11:28 EST
- Dependency Injection is not a design pattern by Alexis Hui on November 04 2004 11:35 EST
- Dependency Injection is not a design pattern by Mark St.Godard on November 04 2004 12:00 EST
- Dependency Injection is not a design pattern by Paul-Michael Bauer on November 04 2004 12:02 EST
- Dependency Injection is not a design pattern by kirk knoernschild on November 05 2004 09:47 EST
- Why should it be renamed at all? by Slava Imeshev on November 04 2004 21:11 EST
-
Ch ch(x5) changes[ Go to top ]
- Posted by: Mark St.Godard
- Posted on: November 04 2004 09:43 EST
- in response to Dion Almaer
I wont comment on voting off.. however with regards to the Singletons.. I would think "Dependency Injection" would be a nice inclusion :) -
Ch ch(x5) changes[ Go to top ]
- Posted by: Burek Jogurt
- Posted on: November 04 2004 11:28 EST
- in response to Mark St.Godard
what is wrong with Flyweight? -
Why flyweight was voted off[ Go to top ]
- Posted by: Toby Reyelts
- Posted on: November 06 2004 01:14 EST
- in response to Burek Jogurt
what is wrong with Flyweight?
According to the article:Most of the others were voted off because people felt they were sufficiently uncommon and that other patterns would probably take their place
Personally, I've used flyweight several times, and it's indispensable when you need it. I don't know what could possibly replace it.
God bless,
-Toby Reyelts -
WTF?[ Go to top ]
- Posted by: James Folsom
- Posted on: November 07 2004 10:05 EST
- in response to Toby Reyelts
Hmmm... I think people are becoming too pedantic here.
First of all, the arguement about Flyweight being "sufficiently uncommon" is absolute nonsense. It's probably the most important pattern ever recognized. You only work with it several dozen times everyday. I guess everyone forgot that Servlets, Struts Actions, and JSPs (if they are designated as thread-safe) are all Flyweights. One of the great things about J2EE is that web-tier components are Flyweights and not a new instance of an page/controller for every HTTP request. Without Flyweights, memory usage becomes linear under load. If they wanted to get rid of something, why not get rid of Prototype since Java handles this for you anyway?
Also, if you can't understand the purpose or function of a factory method, You probably shouldn't be writing software IMHO. -
WTF?[ Go to top ]
- Posted by: Udayan Patel
- Posted on: November 09 2004 09:52 EST
- in response to James Folsom
I agree, atleast on Factory method. I think people who voted it off never developed one not because they didn't wanted but I think they get around with open source products. They might have thought if its available, why bother develop? I am surprised as Fowler that singleton got away with split decision. Because many times Singleton is over used. -
Dependency Injection is not a design pattern[ Go to top ]
- Posted by: Alexis Hui
- Posted on: November 04 2004 11:35 EST
- in response to Dion Almaer
Virtually every design pattern that utilizes composition is dependency injection. It's really on a different plane of abstraction than the one design patterns resides on. It's more like a fundamental principle that design patterns can leverage. -
Dependency Injection is not a design pattern[ Go to top ]
- Posted by: Mark St.Godard
- Posted on: November 04 2004 12:00 EST
- in response to Alexis Hui
Virtually every design pattern that utilizes composition is dependency injection. It's really on a different plane of abstraction than the one design patterns resides on. It's more like a fundamental principle that design patterns can leverage.
Yeah, I agree its more of way of expressing collaborating objects or composition. And is not something that application developers will implement, rather use.
It would be something that a framework would implement.
(However technically Fowler seems to refer to it as a "pattern")
"In the Java community there's been a rush of lightweight containers that help to assemble components from different projects into a cohesive application. Underlying these containers is a common pattern to how they perform the wiring, a concept they refer under the very generic name of "Inversion of Control". In this article I dig into how this pattern works, under the more specific name of 'Dependency Injection'..."
http://martinfowler.com/articles/injection.html
Regardless I was half serious, hence the ":)"
Again, its not a pattern that developers would implement like a Singleton, rather they would use it (ala Spring) -
Dependency Injection is not a design pattern[ Go to top ]
- Posted by: Paul-Michael Bauer
- Posted on: November 04 2004 12:02 EST
- in response to Alexis Hui
It's really on a different plane of abstraction than the one design patterns resides on. It's more like a fundamental principle that design patterns can leverage.
Yes and no.
While, Dependency Injection is the cleanest means of implementing the _concepts_ in the GoF Creational Patterns, it is, in itself, an abstraction of these patterns.
Objects don't need to care if their dependencies are Singletons or Prototypes, and an IoC container itself is the mother-of-all Abstract Factories. -
Dependency Injection is not a design pattern[ Go to top ]
- Posted by: kirk knoernschild
- Posted on: November 05 2004 09:47 EST
- in response to Alexis Hui
Dependency Injection does nothing more than restate the Dependency Inversion Principle. There are other principles, such as the Open-Close Principle and Liskov Substitution that most patterns comply with. -
Why should it be renamed at all?[ Go to top ]
- Posted by: Slava Imeshev
- Posted on: November 04 2004 21:11 EST
- in response to Dion Almaer
Guys,
You cannot be serious discsussing it. Those names have been here for ages. I wouldn't call it "nice" experience. I'd rename it to "stupid".