Skip to main content

Design Patterns 1 : Introduction

Design Patterns : Introduction


So its the holiday time and thought of starting with the Design patterns.
In this post I'll talk about What are design patterns?, What good to us using them?, Why and when use them? and many more. So why wait? Lets start the journey to Design patterns.





What are Design patterns?

So over the years when programmers tried to build systems that can solve problems often they encountered problems that were difficult to overcome. So after finding a solution what they did was presenting it as an future guideline where other programmers when encountered the same problem can easily surpass that. These are what we called as Design Patterns. To see how it all started we have to go back in the past.

History of Design Patterns?

All these patterns buzz started in about 1977/79 when Christopher Alexander showed interest in using using pattern in architecture. That's right not in computer, in architectural perspective. What really driven the patterns in to the programming was in 1987 when  Kent Beck and Ward Cunningham started experimenting that concept in programming. i.e Re-usability of code and design. We will get on to that later. 
But that is not when the world or programming came to know about the Deign patterns. That was 1994 with the book named "Design Patterns - Elements of Reusable Object-Oriented Software" which was written by four authors Erich Gamma, Richard Helm, Ralph Johnson and John Vlissides. They called them selves as The Gang of Four (GOF).
The GOF presented the following principles in their book:

  • Program to an interface not an implementation
  • Favor object composition over inheritance

Why we use Design Patterns?

The main intentions of introducing the Design Patterns was to give a common platform for each and every developer that is across the world and the other one is to give a best practice or a standardization of developing.
According to the Christopher Alexander man himself has stated that 
" Each pattern describe a problem which occurs over and

over again in our environment, and then describe the
core of the solution to that problem, in such a way that
you can use this solution a million times over, without
ever doing it the same way twice "

Basically by using Design Patterns you can turn yourselves from novice to a pro. 

How Many Design Patters are there?

So there are about 23 Design Patterns which can be classified further. For that we need to know about the scope of the Design Patterns.
The Scope is two dimensional, Where the two ends are Scope and the Purpose.
The Scope defines to whom the Design patterns Applies for. Is it for the Classes? or the Objects?
The Purpose define what the Design pattern does.

So to be more clarify lets get these two scopes to a table.


So you can clearly See here that Scope divided into Class and Object, Purpose divided into three namely Creational, Structural and Behavioral. Lets talk a bit more about these 3.

  • Creational Design patterns
These provide flexibility in object creation. Rather than using new in creating objects this checks whether an object creation is really a necessary.
  • Structural Design Patterns
Concerns with the objects and class creations. These concerns on the concepts of inheritance and creation of interfaces.
  • Behavioral Design Pattern
These concerns basically on the communication between two objects or two classes to distribute responsibilities.


So That's it with this article....

Referances:



Popular posts from this blog

Natural Language Processing with Python NLTK part 5 - Chunking and Chinking

Natural Language Processing Using regular expression modifiers we can chunk out the PoS tagged words from the earlier example. The chunking is done with regular expressions defining a chunk rule. The Chinking defines what we need to exclude from the selection. Here are list of modifiers for Python: {1,3} = for digits, u expect 1-3 counts of digits, or "places" + = match 1 or more ? = match 0 or 1 repetitions. * = match 0 or MORE repetitions $ = matches at the end of string ^ = matches start of a string | = matches either/or. Example x|y = will match either x or y [] = range, or "variance" {x} = expect to see this amount of the preceding code. {x,y} = expect to see this x-y amounts of the preceding code source: https://pythonprogramming.net/regular-expressions-regex-tutorial-python-3/ Chunking import nltk from nltk.tokenize import word_tokenize # POS tagging sent = "This will be chunked. This is for Test. World is awesome. Hello world....

Natural Language Processing with Python NLTK part 4 - PoS tagging

Natural Language Processing  PoS tagging or Part of Speech tagging is a commonly used mechanism. This will allow NLTK to tag the words that is in your corpus and give the tags accordingly. There are many tags predefined by the NLTK and here are the list. Number Tag Description 1. CC Coordinating conjunction 2. CD Cardinal number 3. DT Determiner 4. EX Existential  there 5. FW Foreign word 6. IN Preposition or subordinating conjunction 7. JJ Adjective 8. JJR Adjective, comparative 9. JJS Adjective, superlative 10. LS List item marker 11. MD Modal 12. NN Noun, singular or mass 13. NNS Noun, plural 14. NNP Proper noun, singular 15. NNPS Proper noun, plural 16. PDT Predeterminer 17. POS Possessive ending 18. PRP Personal pronoun 19. PRP$ Possessive pronoun 20. RB Adverb 21. RBR Adverb, comparative 22. RBS ...

Natural Language Processing with Python NLTK part 1 - Tokenizer

Natural Language Processing Starting with the NLP articles first we will try the  tokenizer  in the NLTK package. Tokenizer breaks a paragraph into the relevant sub strings or sentences based on the tokenizer you used. In this I will use the Sent tokenizer, word_tokenizer and TweetTokenizer which has its specific work to do. import nltk from nltk.tokenize import sent_tokenize, word_tokenize, TweetTokenizer para = "Hello there this is the blog about NLP. In this blog I have made some posts. " \ "I can come up with new content." tweet = "#Fun night. :) Feeling crazy #TGIF" # tokenizing the paragraph into sentences and words sent = sent_tokenize(para) word = word_tokenize(para) # printing the output print ( "this paragraph has " + str(len(sent)) + " sentences and " + str(len(word)) + " words" ) # print each sentence k = 1 for i in sent: print ( "sentence ...