আমি সন্দেহ করি যে আমি এখানে স্কুলছাত্রী ত্রুটি করেছি এবং আমি স্পষ্টতা খুঁজছি। আমার সমাধান (সি #) এর অনেকগুলি ক্লাস - আমি সংখ্যাগরিষ্ঠতা বলতে সাহস করি - আমি একটি সম্পর্কিত ইন্টারফেস লিখে শেষ করেছি। যেমন একটি "আইসিএলকুলেটর" ইন্টারফেস এবং একটি "ক্যালকুলেটর" বর্গ যা এটি প্রয়োগ করে, যদিও আমি কখনই কোনও ভিন্ন প্রয়োগকারীর সাথে সেই ক্যালকুলেটরটি প্রতিস্থাপনের সম্ভাবনা রাখি না। এছাড়াও, এই শ্রেণীর বেশিরভাগই তাদের প্রকল্পের নির্ভরতা হিসাবে একই প্রকল্পে বাস করে - তাদের সত্যই কেবল হওয়া দরকার internal
, তবে public
তাদের নিজ নিজ ইন্টারফেস বাস্তবায়নের পার্শ্ব-প্রতিক্রিয়া হিসাবে শেষ হয়েছে।
আমি মনে করি কিছু মিথ্যাচার থেকে উদ্ভূত প্রতিটি কিছুর জন্য ইন্টারফেস তৈরির এই অনুশীলন:
1) আমি প্রাথমিকভাবে ভেবেছিলাম যে ইউনিট পরীক্ষার মোকাবিলা করার জন্য একটি ইন্টারফেসের প্রয়োজনীয়তা ছিল (আমি Moq ব্যবহার করছি), তবে আমি তখন থেকেই আবিষ্কার করেছি যে কোনও শ্রেণীর সদস্যরা যদি তাকে ঠাট্টা করা যায় তবে এটির virtual
একটি প্যারামিটারলেস কনস্ট্রাক্টর রয়েছে (যদি আমাকে সংশোধন করে তবে আমি ভুল).
2) আমি প্রাথমিকভাবে ভেবেছিলাম আইওসি ফ্রেমওয়ার্ক (ক্যাসেল উইন্ডসর) সহ কোনও শ্রেণি নিবন্ধ করার জন্য একটি ইন্টারফেসের প্রয়োজন ছিল, যেমন
Container.Register(Component.For<ICalculator>().ImplementedBy<Calculator>()...
আসলে যখন আমি কেবল নিজের বিরুদ্ধে কংক্রিটের ধরণটি নিবন্ধ করতে পারি:
Container.Register(Component.For<Calculator>().ImplementedBy<Calculator>()...
3) ইন্টারফেস ব্যবহার করে, যেমন নির্ভরতা ইনজেকশনের জন্য কনস্ট্রাক্টর পরামিতি, ফলে "আলগা কাপলিং" হয়।
তাহলে আমি কি ইন্টারফেস নিয়ে পাগল হয়ে গেছি ?! আমি যেখানে আপনি "সাধারণত" একটি ইন্টারফেস ব্যবহার করেন, যেমন একটি সার্বজনীন এপিআই প্রকাশ করা বা "প্লাগেবল" কার্যকারিতার মতো জিনিসের জন্য ব্যবহার করেন সে পরিস্থিতিতে আমি সচেতন। আমার সমাধানে এমন কয়েকটি ক্লাস রয়েছে যা এই ধরনের ব্যবহারের ক্ষেত্রে ফিট করে তবে আমি ভাবছি যে অন্য সমস্ত ইন্টারফেস অপ্রয়োজনীয়, এবং অপসারণ করা উচিত? উপরের পয়েন্ট 3) সম্পর্কিত, আমি যদি এটি করা হয় তবে আমি "লুজ কাপলিং" লঙ্ঘন করব না?
সম্পাদনা : - আমি কেবল মকের সাথে একটি নাটক করছি, এবং এটির উপহাস করতে সক্ষম হওয়ার জন্য এটি পাবলিক এবং ভার্চুয়াল হওয়ার জন্য একটি পাবলিক প্যারামিটারলেস কনস্ট্রাক্টর লাগবে seems সুতরাং দেখে মনে হচ্ছে আমি তখন অভ্যন্তরীণ ক্লাস করতে পারি না?