ডিজাইন প্যাটার্ন হল এমন একটি সমাধান সেট যা ব্যবহৃত একটি বিশেষ ধরনের সমস্যার ক্ষেত্রে। সফটওয়্যা ডিজাইনের জন্য ডিজাইন প্যাটার্ন বিশেষভাবে গুরুত্বপূর্ণ। এটি কোডের জটিলতা কমানো, মেইনটেইনান্স এবং একই কাজ বারবার করা থেকে সাহায্য করে।
বাস্তব দুনিয়ার ক্ষেত্রে যদি চিন্তা করি আমার একটি চায়ের দোকান আছে এখন আমি এখানে ৩ ধরনের চা বিক্রি করি দুধ চা, লাল চা আর গ্রিন টি। এখন যখন কাস্টমার যখন চায়ের অর্ডার দেয় তখন সে যাই চা খেতে চাই সেটা বানানো শুরু করি। এখন ৩ ধরনের চা বানানোর প্রক্রিয়া তো ৩ রকম এবং কাস্টমারের সংখ্যা ও অনেক বেশি। সুতরাং যেখানে আমি চা বানাচ্ছি সেখানে প্রতিনিয়ত অর্ডার অনুযায়ী সিস্টেম পরিবর্তন করা লাগতেছে। এখানে কাজের গতি বাড়ানো আর ভাল ব্যবস্থাপনার জন্য আমাকে একটা ডিজাইন প্যাটার্ন বানাতে হবে। রান্নাঘরে ৩ টা আলাদা জায়গা থাকবে যেখানে ৩ ধরনের চা আলদা ভাবে বানানো হবে। আর যেহেতু ৩ জায়গায় নির্দিষ্ট ক্যটাগরির চা তৈরী হবে তখন আমাদের প্রসেস আর পরিবর্তন করা লাগবে না। তখন কাস্টমার অর্ডার দেওয়ার সাথে সাথে নির্দিষ্ট জায়গায় অর্ডার চলে যাবে।
কেন দরকার ডিজাইন ডিজাইন প্যাটার্ন
১. ডিজাইন প্যাটার্ন হল সাধারন কিছু সমস্যার এমন সমাধান যেটা যাচাই করা এবং সর্বজনগৃহীত। যদি কেউ কোডিং করার সময় এমন সমস্যায় নাও পড়ে তারপর ও এটি ফলো করে অনেক ধরনের সমস্যা সমাধান করা যায়।
২. ডিজাইন প্যাটার্ন হল কিছূটা সবাই বুঝতে পারে এমন একটা ভাষা। ফলে টিমের সবাই এবং অন্যান্য ডেভোলপার খুব সহজেই কোডিং প্যাটার্ন বুঝতে পারে কারন এটি একটি স্ট্যান্ডার্ড। উদাহরণস্বরূপ কেঁউ যদি সিঙ্গেলটন প্যাটার্নের কোড লিখে তাহলে অন্য একজন দেখেই বুঝতে পারবে এটা সিঙ্গেলটন প্যাটার্ন।
ডিজাইন প্যাটার্ন ৩ ধরনের হয় সাধারণতঃ
- Creational Design Pattern
- Structural Design Pattern
- Behavioral Design Pattern
ক্রিয়েশনাল ডিজাইন প্যাটার্ন (Creational Design Pattern)
ক্রিয়েশনাল ডিজাইন প্যাটার্ন হল কিভাবে আমরা অবজেক্ট তৈরি করতে পারি তার বিভিন্ন পদ্ধতি। কোন বড় প্রোজেক্টে কাজ করার সময় যদি নরমালি যে ভাবে তৈরি করি সেভাবেই করতে থাকি তাহলে প্রোজেক্টটা অনেক বড় হয়ে গেলে এটা জটিল অবস্থায় রূপ নিবে। ক্রিয়েশনাল ডিজাইন প্যাটার্ন অবজেক্ট তৈরি করার প্রক্রিয়াটা নিয়ন্ত্রন করে। বিভিন্ন ধরনের ক্রিয়েশনাল ডিজাইন প্যাটার্ন আছে, সেগুলো হলঃ
- ফ্যাক্টরি মেথড প্যাটার্ন (Factory Method Pattern)
- অ্যাবস্ট্রাক্ট ফ্যাক্টরি প্যাটার্ন (Abstract Factory Pattern)
- সিঙ্গেলটন প্যাটার্ন (Singleton Pattern)
- প্রোটোটাইপ প্যাটার্ন (Prototype Pattern)
- বিল্ডার প্যাটার্ন (Builder Pattern)
স্ট্রাকচারাল ডিজাইন প্যাটার্ন (Structural Design Pattern)
স্ট্রাকচারাল ডিজাইন প্যাটার্ন হল কিভাবে আমরা অবজেক্ট আর ক্লাস তৈরি করব এবং সেটাকে একটা বড় স্ট্রাকচারে রূপ দেব। এই প্যাটার্ন বিভিন্ন অবজেক্টের ভেতরের রিলেশনকে সহজ ভাবে উপস্থাপন করে। বিভিন্ন ধরনের ছোট ছোট অংশ যখন এক সাথে একটা স্ট্রাকচা্র গঠন করে এবং এর একটা অংশ পরিবর্তন হলে পুরো গঠনের কোন প্রভাব পড়বে না। বিভিন্ন ধরনের ক্রিয়েশনাল ডিজাইন প্যাটার্ন আছে, সেগুলো হলঃ
- এডাপ্টার প্যাটার্ন (Adapter Pattern)
- ব্রিজ প্যাটার্ন(Bridge Pattern)
- কম্পজিট প্যাটার্ন (Composite Pattern)
- ডেকোরেটর প্যাটার্ন (Decorator Pattern)
- Facade Pattern
- Flyweight Pattern
- Proxy Pattern
বিহ্যাভিওরাল ডিজাইন প্যাটার্ন (Behavioral Design Pattern)
বিহ্যাভিওরাল ডিজাইন প্যাটার্ন তৈরি করা হয় অবজেক্ট গুলোর ভেতরকার যোগাযোগ এবং কার্যাবলীর উপর লক্ষ্য রেখে। অবজেক্ট গুলো খুব সহজেই ভেতরকার তথ্য আদান প্রদান করে এবং একজনের পরিবর্তনের জন্য অন্য অবজেক্ট কার্যক্রম বাধাগ্রস্থ হয়না। তাদেরকে loosely coupled হতে হয়।
- Chain of Responsibility Pattern
- Command Pattern
- Interpreter Pattern
- Iterator Pattern
- Mediator Pattern
- Memento Pattern
- অবজারভার প্যাটার্ন (Observer Pattern)
- স্টেট প্যাটার্ন (State Pattern)
- স্ট্রাটেজি প্যাটার্ন (Strategy Pattern)
- Template Pattern
- Visitor Pattern
- Null Object