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