মায়ারের অবজেক্ট-ওরিয়েন্টেড সফটওয়্যার কনস্ট্রাকশন (1988) এ তিনি খোলা / বদ্ধ নীতিটি নীচে সংজ্ঞায়িত করেছেন :
- কোনও মডিউলটি এখনও এক্সটেনশনের জন্য উপলব্ধ থাকলে তা উন্মুক্ত বলে জানানো হবে। উদাহরণস্বরূপ, এতে থাকা ডেটা স্ট্রাকচারগুলিতে ক্ষেত্রগুলি যুক্ত করা বা এটি সম্পাদন করে ফাংশনগুলির সেটে নতুন উপাদান যুক্ত করা উচিত।
- কোনও মডিউলটি অন্য মডিউল দ্বারা ব্যবহারের জন্য উপলব্ধ থাকলে তা বন্ধ বলে বলা হবে। এটি ধরে নিয়েছে যে মডিউলটি একটি সু-সংজ্ঞায়িত, স্থিতিশীল বর্ণনা (তথ্য গোপনের অর্থে ইন্টারফেস) দেওয়া হয়েছে।
তিনি বলে চলেছেন:
আপনি যদি কোনও মডিউল পুনরায় খোলেন, তবে পুরানো সংস্করণে নির্ভর করার কারণে আপনাকে অবশ্যই তার সমস্ত ক্লায়েন্টকে আপডেট করতে হবে। … [এই সমস্যা] উত্থাপিত হয় প্রতিটি সময় কোনও মডিউল কোনও নতুন ফাংশন বা ডেটা উপাদান দ্বারা প্রসারিত করা উচিত, প্রত্যক্ষ এবং অপ্রত্যক্ষ ক্লায়েন্টের পরিবর্তনগুলি ট্রিগার করে। ... ডিজাইন এবং প্রোগ্রামিংয়ের শাস্ত্রীয় পদ্ধতির সাথে, খালি এবং বন্ধ উভয়ই মডিউল লেখার কোনও উপায় নেই।
এই দ্বিধায় মেয়ারের সমাধান: বিদ্যমান ক্লাসগুলি সংশোধন করে লাইব্রেরি মডিউলটি কখনই প্রসারিত করবেন না; পরিবর্তে, একটি নতুন মডিউল লিখুন যা বিদ্যমান ক্লাসগুলিকে সাবক্লাস করে এবং নতুন ক্লায়েন্টরা সেই নতুন মডিউলের উপর নির্ভর করে।
এখন, 1988 সালে, আমি টার্বো পাস্কাল এবং ব্লাকেনশিপ বেসিকের খেলনা (প্রক্রিয়াজাতীয়) প্রোগ্রামগুলি লিখছিলাম, এবং আমার একবিংশ শতাব্দীর পেশাগত অভিজ্ঞতাটি জেভিএম, সিএলআর এবং গতিশীল ভাষাগুলিতে রয়েছে, তাই আমি জানি না মেয়ের অর্থ কী? "ডিজাইন এবং প্রোগ্রামিংয়ের শাস্ত্রীয় পদ্ধতির" দ্বারা।
ক্লায়েন্ট মডিউলগুলি কেন আবার খুলতে হবে তার মাইরের একটি কংক্রিট উদাহরণ (একটি গণনার উপর একটি স্যুইচ স্টেটমেন্ট যেখানে আরও বেশি সদস্যের প্রয়োজন রয়েছে) যথেষ্ট যুক্তিসঙ্গত বলে মনে হয়, তবে প্রতিবার আপনি একটি লাইব্রেরিতে কার্যকারিতা যুক্ত করার বিষয়ে তিনি এই দৃ nearly়তার সাথে মোটামুটি সমর্থন করেন না doesn't মডিউল, আপনাকে এর সমস্ত ক্লায়েন্ট আপডেট করতে হবে ।
1988 সালে এই দাবিটি স্ব-স্পষ্ট বলে মনে হয়েছিল এমন কোনও -তিহাসিক কারণ আছে? একটি সি স্ট্যাটিক লাইব্রেরিতে ফাংশন বা ডেটা স্ট্রাকচার যুক্ত করে এমন লেআউট বদলেছে কি, পিছনের সাথে সামঞ্জস্যপূর্ণ এপিআই সহ ক্লায়েন্টদের পুনরায় সংযোগ করতে হয়েছিল? অথবা মায়ার আসলেই কেবল পিছিয়ে থাকা সামঞ্জস্যতা এপিআই প্রয়োগের জন্য একটি প্রক্রিয়া সম্পর্কে কথা বলছেন?