The whole idea was initiated by "Mahesh Chand" sir and "Dhananjay"
sir. The whole thought was that in
today's world with growing internet and the kind of knowledge base which is
available on the web , developers rarely connect offline.
With due respect to the online world we cannot under
estimate the power of meeting offline, getting connected, knowing people by
faces and talking to them personally
gives you a different feeling which cannot be communicated via electronic faces posted on facebook,
twitter etc. That's what this small Mumbai tea party meeting was all about.
Things started shaping up
I was completely bought in to the thought of meeting developer's
offline and discussing on a topic and concluding / exchanging thought process. After
a lot of thought we decided on a topic i.e. "Most used design patterns". Thanks to Praveen he posted the
announcement on c# corner and my mobile started ringing with calls and interest
I had received like 15 or more calls but some of them I was
not able to turn back and some of them did not turn back on the meeting day J. First a big apology for people whom I was not
able to revert back. I can post to you the below design pattern cup to your
location as a sorry gesture from my side (Only Mumbai for now).
So the meeting finally started with 4 enthusiastic developers
including me starting from the left Kamal sir, Akshay sir, Swapneel sir
GOSH what a contrast between me and Swapneel sir one is
hairy and the other is J
Mr. Kamal sir first started the fire stating that Singleton is themost used pattern. This was also backed by Akshay sir. For some reason I hada thought that Singleton is definitely most used but it's also over used andis now favorite as an anti-pattern.
We also discussed that sometimes you really do not need singleton like in ASP.NETweb application where you have cache and application objects, how does singleton benefit ?. Said and done wecannot use cache and application objects in windows application,comparatively singleton has a wide reusability across technologies.
So the one pattern which added to our list was "Singleton Pattern".
The next pattern which came out was the factory pattern (I am notsure it was initiated by whom but I think it was Swapneel sir). We discussedhow factory pattern is good for decoupling and can serve as a middle manbetween UI and the BO and the BO and the DAL.
You can also watch my video on factory patterns from factory design patterns
So one more pattern to our list was "FactoryPattern".
The next pattern which was added to list by Swapneel was decoratorpattern. Decorator helps to adddynamically stacked behavior thus helping us to change the behavior of theobject on runtime.. He talked about his experience where he needs to createvarious schemes in a plug and play manner. You can have Scheme 1 which hasplan 1, plan 2 and plan3, but then you would like to create scheme 2 whichis combination of plan1 and plan2.
We also did a small demonstration of how we want validation to be plug andplay with combination depending on different situations. You can see thescreen we demonstrated at the right hand side using decorator pattern.
One more pattern added to list "Decoratorpattern".
The final pattern we talked about was "Iterator pattern" which helps us to browse elements of a collection
in an encapsulated manner.
We also discussed shortly about design patterns like observer (the publisher
and subscriber model) and mediator pattern. Below is a simple indicatory diagram
I have created to visualize which patterns go where. This is just an indicatory
diagram, design patterns will have 100 other situations where they will fit in
other than the one shown below.
Later we also spoke about how senior management and customer over look design
patterns and sometimes due to project deadlines we need to sacrifice all good
things and just complete the project with clumsy code.
Conclusion and what next
Due to time constraint we did not talk about other patterns.
So the conclusion for now is that below patterns are the most used (Many people
will have different thoughts about what we concluded, but I personally think
learning is a ongoing process): -
The next step is to demonstrate these patterns online
through some webinar. We are also planning some important webinar and meets on
common topics like estimation, coding standards, writing good requirements etc.
We have lighted the candle; we would
like other people to make it a fire.
Where many of those communities are talking about new technologies it's time to
talk about common things we do every day and mature on the same. In todays
scenario 5% people are excited about learning Azure (no offense) and on the
other side we have 80% developers still struggling with simple OOP concepts.
Do you have topic which is important for common developers
and professionals, let us know, we can talk.
Courtesy: - http://www.mumbailocal.net/