আমি মুক্ত-বদ্ধ নীতিটির উদ্দেশ্য বুঝতে পারি। এর অর্থ হ'ল সংশোধন করার সময় ইতিমধ্যে কাজ করা কোনও কিছু ভাঙার ঝুঁকি হ্রাস করা, আপনাকে কোনও পরিবর্তন না করে প্রসারিত করার চেষ্টা করার কথা বলার মাধ্যমে।
তবে, এই নীতিটি বাস্তবে কীভাবে প্রয়োগ হয় তা বুঝতে আমার কিছুটা সমস্যা হয়েছিল। আমার বোঝার জন্য, এটি প্রয়োগ করার দুটি উপায় রয়েছে। বেওফোর এবং সম্ভাব্য পরিবর্তনের পরে:
আগে: প্রোগ্রামটি বিমূর্তকরণ এবং যতটা সম্ভব 'ভবিষ্যতের ভবিষ্যদ্বাণী করা' to উদাহরণস্বরূপ, ভবিষ্যতে সিস্টেমে এস যুক্ত করা
drive(Car car)
থাকলে একটি পদ্ধতি পরিবর্তন করতে হবেMotorcycle
, সুতরাং এটি সম্ভবত ওসিপি লঙ্ঘন করে। তবে ভবিষ্যতে পদ্ধতিটিdrive(MotorVehicle vehicle)
পরিবর্তনের সম্ভাবনা কম, তাই এটি ওসিপিতে মেনে চলে।তবে ভবিষ্যতের ভবিষ্যদ্বাণী করা এবং সিস্টেমে কী কী পরিবর্তন আনতে চলেছে তা আগেই জানা খুব কঠিন difficult
পরে: যখন কোনও পরিবর্তন প্রয়োজন হয়, তার বর্তমান কোডটি পরিবর্তনের পরিবর্তে একটি শ্রেণি প্রসারিত করুন।
# 1 অনুশীলনটি বোঝা শক্ত নয়। তবে এটি অনুশীলন # 2 যে কীভাবে প্রয়োগ করতে হয় তা বুঝতে আমার সমস্যা হচ্ছে।
উদাহরণ হিসেবে বলা যায় (আমি এটা YouTube- এ একটি ভিডিও থেকে গ্রহণ): দিন আসুন আমরা একটি বর্গ যে গ্রহণ করে একটি পদ্ধতি আছে CreditCard
বস্তু: makePayment(CraditCard card)
। এক দিনের Voucher
এস সিস্টেমে যুক্ত করা হয়। এই পদ্ধতিটি তাদের সমর্থন করে না তাই এটি পরিবর্তন করতে হবে।
প্রথমে পদ্ধতিটি প্রয়োগ করার সময় আমরা ভবিষ্যত এবং প্রোগ্রামটিকে আরও বিমূর্ত শর্তে ভবিষ্যদ্বাণী করতে ব্যর্থ হয়েছি (উদাহরণস্বরূপ makePayment(Payment pay)
, এখন আমাদের বিদ্যমান কোডটি পরিবর্তন করতে হবে)।
অনুশীলন # 2 বলছে আমাদের পরিবর্তনের পরিবর্তে প্রসারিত করে কার্যকারিতা যুক্ত করা উচিত। ওটার মানে কি? আমি কি বিদ্যমান ক্লাসটির বিদ্যমান কোডটি পরিবর্তনের পরিবর্তে সাবক্লাস করা উচিত? পুনর্লিখনের কোডটি এড়াতে কি আমার চারপাশে কোনও ধরণের আবরণ তৈরি করা উচিত?
অথবা নীতিটি 'কার্যকারিতাটি কীভাবে সঠিকভাবে সংশোধন / সংযোজন করতে হবে' বোঝায় না, বরং 'প্রথম স্থানে (অর্থাৎ বিমূর্তির প্রোগ্রামে) পরিবর্তন কীভাবে এড়াতে হবে তা বোঝায়?