Saturday, February 13, 2010

Do I care about GoF Design Patterns?

The fact that event driven system is getting used without much understanding about the message loop, shows the maturity of Chain of Responsibility.

The UI has matured so much that the widgets/controls are getting used with effective event handlers without the knowledge of Command pattern.

The dream of creating our own language, diving into ‘systems programming’ was buried down under the sea of easy opportunities in the application programming. The situation has moved us far away from thinking about the how a statement (line of code) gets evaluated forcing us not to think about the Interpreter pattern.

Some of us may recollect the struggle of creating a generalized class to read objects from a linked list when there were no ready to use classes. Now, [IEnumerable] has matured so much that the Iterator pattern has been taken for granted.

The containers such as Main Window, Panels, Group Boxes etc. are vital parts of the UI design but the application designer may not be aware that these controls are nothing but the Mediators.

In early days of Windows programming serializing an object a big task. MFC made it slightly easier but still it was 10 lines of code. 10 lines of code! Now that may sound too much, with .NET type of frameworks providing [Serialiazable] attribute. The implementers may not be aware that they are implementing Memento.

Struts, Swing, ASP.NET, WPF is widely used with the full knowledge of MVC/MVP/MVVM but not necessarily aware about the Observer pattern.

Most of the grids provide sorting facility independent of the data type shielding the fact that somewhere inside it is the Strategy pattern.

Privilege of writing our own State (pattern) machine has also been taken away by ready to use Workflow Engines such as Workflow Foundation, Enhydra Shark.

With the fact that Silverlight 3.0 Start up kit preview 2 provides RESTful Singleton Service project template, are these the last few days of having our own Singleton class?

DataGrid allows creation of template columns where different controls can be placed. The creation of column depends on kind of controls that have been placed at the design time. Is it using something like Builder pattern? But what was the last situation where we had to create a really complex object by hiding the creation process?

Many applications provide functionality of creating a document from another base document. We can implement such functionality at the database level or using MemberwiseClone of C# or Cloneable of Java. Is it not Prototype pattern?

Extract only that portion of the data from the database which is required for processing and for the user display i.e. don’t use Select *. This principle sounds like Flyweight pattern.

The XML navigation, DOM navigation, Tree navigation is very popular and may be a creation of Composite Pattern.

Do we prefer sub-classing over the Decorator pattern?

Silverlight 2.0 provided moderately better way of integrating a web service and generating proxy classes. But with Silverlight 3.0 RIA services style of programming, will the next generation programmer know about Proxy pattern?

In case of porting project with reusability in mind we will require Adapter. Façade is also getting used .

So what are we left with? May be couple of Creational and Structural patterns?

No comments:

Post a Comment