Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save tarekahsan709/2724e2014d7ba278ab76ff60cfda0f72 to your computer and use it in GitHub Desktop.
Save tarekahsan709/2724e2014d7ba278ab76ff60cfda0f72 to your computer and use it in GitHub Desktop.

কিছু সাধারণ কারণ যার জন্য ডিজাইন প্যাটার্ন দিয়ে রি-ডিজাইন করার প্রয়োজন:

##১. একটি সুনির্দিষ্ট ক্লাসকে উল্লেখ করে অবজেক্ট তৈরী করা। কোনো ইন্টারফেসের পরিবর্তে আমরা যখন কোন সুনির্দিষ্ট ক্লাসের নাম উল্লেখ করে অবজেক্ট তৈরী করি তাহা আমাদের একটু বদ্ধ নির্দিষ্ট পথে ধাবিত করে। এই নির্দিষ্ট পথে ধাবিত হাওয়া উক্ত অবজেক্টের পরবর্তী কোন পরিবর্তন অনেক জটিল করে তুলতে পারে। এই সমস্যা থেকে দূরে থাকার জন্য আমাদের অবজেক্ট গুলো অপ্রত্যক্ষ ভাবে তৈরি করা উচিত।
####রেফারেন্স ডিজাইন প্যাটার্ন : অ্যাবস্ট্রাক্ট ফ্যাক্টরি , ফ্যাক্টরি মেথড , প্রোটোটাইপ।

২. নিদিষ্ট কাজের উপর নির্ভর করা।

যখন আমরা একটি কাজ নির্ধারণ করি তখন সেটা এক ভাবেই সমাধান করার করার চেষ্টা করি। আমরা হার্ড কোডে সে কাজটি না করে বরং কাজটি সমাধানের পথ পরিবর্তন করে কম্পাইল এবং রান টাইমে তা সহজে সমাধান করতে পারি । ####রেফারেন্স ডিজাইন প্যাটার্ন : চেইন অফ রেস্পন্সিবিলিটি , কম্যান্ড।

৩. হার্ডওয়্যার ও সফটওয়্যার প্লাটফর্মের উপর নির্ভর করা।

বিভিন্ন হার্ডওয়্যার ও সফ্টওয়ারের এক্সটার্নাল অপারেশন সিস্টারমের ইন্টারফেস এবং এপ্লিকেশন প্রোগ্রামিংয়ের ইন্টারফেস এক না এরা ভিন্ন । যে সফটওয়্যার একটি নিদিষ্ট প্লাটফর্মের উপর নির্ভর করে বানানো হয় সেটা অন্য প্লাটফর্মের জন্য করা জটিল। শুধু তাই না সেটা আপটুডেট রাখাও কঠিন। প্লাটফর্মের লিমিট চিন্তা করে আমাদের সফটওয়্যার ডিজাইন করা উচিত।
####রেফারেন্স ডিজাইন প্যাটার্ন : অ্যাবস্ট্রাক্ট ফ্যাক্টরি , ব্রিজ ।

৪. অবজেক্টের বিবরণ অথবা তার ইম্প্লিমেন্টেশনের উপর নির্ভর করা।

একটি অবজেক্টের ইম্প্লিমেন্টেশন, বিবরণ, লোকেশন কোথায় এবং কিভাবে হয় তা যখন কোন ক্লায়েন্ট জানে তখন সে অবজেক্টের যে কোন পরিবর্তনে ওই ক্লায়েন্ট কেও সে ভাবে পরিবর্তন করতে হয়। ক্লায়েন্ট থেকে এই সব তথ্য গোপন করে রাখা উক্ত ফল বন্ধ করে।
####রেফারেন্স ডিজাইন প্যাটার্ন : অ্যাবস্ট্রাক্ট ফ্যাক্টরি , ব্রিজ , মেমেন্টো , প্রক্সি ।

৫. আলগোরিদমের উপর নির্ভর করা।

ডেভেলপমেন্টের সময় এলগোরিদমকে অনেক সময় অপ্টিমাইজড , বর্ধন বা তার পরিবর্তন করে তা পুনরায় ব্যবহার করতে হয়। যে সকল অবজেক্ট ওই আলগোরিদমের উপর নির্ভর করে তাদের ও ওই সময় পরিবর্তন করতে হয়। যেহেতু এলগোরিদম পরিবর্তন হতেই পারে সেহেতু তাদের আলাদা ভাবে রাখা উচিত যেন অবজেক্ট ও তার সাথে পরিবর্তন না করতে হয়।
####রেফারেন্স ডিজাইন প্যাটার্ন : বিল্ডার , ইটেরাটোর , স্ট্র্যাটেজি , টেমপ্লেট মেথড , ভিজিটর।

৬. টাইট কাপলিং।

যে সকল ক্লাসেরা টাইট কাপলিং তাদের একক ভাবে ব্যবহার করা কঠিন। যেহেতু তারা একে ওপরের উপর অনেক নির্ভরশীল। টাইট কাপলিং আমাদের মনোলিথিক সিস্টেমের দিকে ধাবিত করে। সেখানে সব ক্লাসকে কে ভালো করে না বুঝে বা পরিবর্তন না করে একটি ক্লাসকে পরিবর্তন বা মুছে ফেলা অনেক কঠিন। লুস কাপলিং একটি ক্লাসকে বারবার ব্যবহার করা এবং সিস্টেমকে সহজে পরিবর্তন করার সম্ভাবনা অনেক বেশি বাড়ায় রাখে।
ডিজাইন প্যাটার্ন অবস্ট্রাক কাপলিং এবং ল্যায়েরিং ব্যবহার করে সিস্টেম লুজলি কাপোল তৈরী করে।
####রেফারেন্স ডিজাইন প্যাটার্ন : অ্যাবস্ট্রাক্ট ফ্যাক্টরি, ব্রিজ , চেইন অফ রেস্পন্সিবিলিটি , কম্যান্ড , ফাঁকেড , মেডিয়েটর , অবজার্ভার।

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment