আমরা যখন শুরুতে একটা সফটওয়ার তৈরি করি, সেখানে হয়তো অল্প কিছু ফিচার থাকে। কিন্তু ইউজার বাড়তে থাকলে আমাদের বাড়তি ফিচার যুক্ত করতে হয়। বা আমরা যদি কোন ক্লায়েন্টের জন্য সফটওয়ার তৈরি করি, শুরুর দিকে ক্লায়েন্টের মাথায় যে আইডিয়া থাকে, সেটাই আমরা ইমপ্লিমেন্ট করি। এরপর ক্লায়েন্ট দেখল তার আরো কিছু ফিচার যুক্ত করা দরকার, তখন আমাদের কাছে এসে বলে। আমরা যদি শুরুতেই যদি সফটওয়্যারটা ঐভাবে ডিজাইন না করি, নতুন ফিচার যুক্ত করা কঠিন হয়ে পড়বে। এসব সমস্যা সমাধানের জন্যই হচ্ছে ডিজাইন প্যাটার্ন। সফটওয়ার ফিউচারে পরিবর্তন হতে পারে চিন্তা করেই সফটওয়ার তৈরির শুরুর থেকেই আমরা ঐভাবে কোড লিখি। যেন সহজেই যে কোন কিছু পরিবর্তন বা নতুন কিছু যুক্ত করা যায়।
এখন অনেক ধরণের সফটওয়ার রয়েছে, যেমন গেম, মোবাইল অ্যাপ বা এন্ট্রারপ্রাইজ সফটওয়্যার। ডিজাইন প্যাটার্ন হচ্ছে সাধারণ একটা পদ্ধতি, এসবের যে কোনটাতেই প্রয়োগ করা যায়। বলা যায় অনেক গুলো সাধারণ সমস্যার সমাধান হচ্ছে এই ডিজাইন প্যাটার্ন। যেমন আমরা কি সহজে নতুন ফিচার যুক্ত করতে পারব? সফটওয়্যারের কোন অংশ সহজেই পরিবর্তন করতে পারব? সফটওয়ারটিকে সহজে স্কেলেবল করতে পারব কিনা? এমন সমস্যা গুলোর সমাধানের জন্য হচ্ছে ডিজাইন প্যাটার্ন।
আমরা একটা গেম তৈরি করব। গেমের মূল ক্যারেক্টার এক এক ভিলেনের সাথে এক এক ভাবে যুদ্ধ করতে হবে। রান টাইমে কোন অবজেক্টের (এখানে গেম ক্যারেক্টার) বিহেভিওর চেঞ্জ বা স্ট্র্যাটিজি পরিবর্তন করতে হতে পারে। তো এই সমস্যা সমাধান করার জন্য রয়েছে একটা ডিজাইন প্যাটার্ন, যাকে বলা হয় স্ট্র্যাটিজি প্যাটার্ন। এমন না যে আপনাকে স্ট্রাটিজি প্যাটার্নই মানতে হবে। আপনি চাইলে নিজের মত করে ও কোড লিখতে পারেন। কিন্তু ডিজাইন প্যাটার্ন মানলে বাড়তি অনেক কিছু আপনাকে চিন্তা করতে হবে না। ডিজাইন প্যাটার্ন হচ্ছে গাইডলাইনের মত।
ডিজাইন প্যাটার্নকে জনপ্রিয় করেছে চারজন সফটওয়্যার ইঞ্জিনিয়ার। তারা Gang of Four নামে পরিচিত, Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides। তারা একটি বই লিখেছেন Design Patterns: Elements of Reusable Object-Oriented Software নামে। যেখানে বিভিন্ন ডিজাইন প্যাটার্ন নিয়ে আলোচনা করেছেন। তারা ২৩টি ডিজাইন প্যাটার্ন তৈরি করেছেন। পরে যদিও অন্যান্য সফটওয়্যার ইঞ্জিনিয়ার প্রয়োজন অনুযায়ী আরো অনেক গুলো ডিজাইন প্যাটার্ন তৈরি করেছেন। জনপ্রিয় কয়েকটি হচ্ছেঃ
- স্ট্রাটিজি প্যাটার্ন – Strategy Pattern
- অবজার্ভার প্যাটার্ন – Observer Pattern
- ডেকোরেটর প্যাটার্ন – Decorator Pattern
- সিঙ্গেলটন প্যাটার্ন – Singleton Pattern
- স্টেট প্যাটার্ন – State Pattern
- কালেকশন প্যাটার্ন – Collection Pattern
- কম্পোজিট প্যাটার্ন – Composite Pattern ইত্যাদি।