সফ্টওয়্যার বিভিন্ন সংস্করণ মধ্যে একটি ফাইল টাইপ পিছনে সামঞ্জস্য করার জন্য একটি ভাল নকশা কি?
উদাহরণস্বরূপ, মাইক্রোসফ্ট কীভাবে 2007, 2010 এবং 2013 ইত্যাদি শব্দ ... সমস্ত ওপেন ডকএক্স ফাইলগুলিতে পায় তবে বিভিন্ন সংস্করণে আরও / কম ডেটা সংরক্ষণ করতে পারে এবং ডেটা কিছুটা ভিন্ন উপায়ে সংরক্ষণ করা যায়, সব একই ফাইলের ধরণে এবং একটি একটি সংস্করণে সংরক্ষিত ফাইলটি অন্য সংস্করণে খোলা যেতে পারে, তবে ফাইলটির কিছু উপাদান পুরানো সংস্করণগুলিতে নাও থাকতে পারে?
আমি বোঝাতে চাইছি এটি করার প্রকৃত উপায় হ'ল এটির মতো কিছু থাকা
private string openfile(string filename)
{
File.Open(filename)
... some logic that gets a header from the file that will never change
switch (fileversion)
case 2007:
.....
case 2010
.....
case 2013
.....
}
তবে এটি অবিশ্বাস্যরকম একচেটিয়া বলে মনে হয়, খুব অবিশ্বাস্য নয় এবং এটি অনেকগুলি অনুলিপি / পেস্ট কোডের দিকে নিয়ে যায়।
সুতরাং আমি সমস্ত সংস্করণগুলির জন্য একটি বেস ইন্টারফেস ব্যবহার করার কথা ভাবছিলাম যা অপরিবর্তনীয় কাঠামোর সংজ্ঞা দেয় যেমন শিরোনাম, যা ফাইলটিতে উপস্থিত হওয়া দরকার, এবং পদ্ধতিগুলি যা সিরিয়ালাইজেশন / ডিসেসরিয়ালাইজেশনের জন্য উপলব্ধ হওয়া দরকার, তারপরে একাধিক উত্তরাধিকার যাতে প্রতিটি নতুন সংস্করণের শ্রেণি যা ইন্টারফেস প্রয়োগ করে তা পুরানো সংস্করণকে উত্তরাধিকার সূত্রে প্রাপ্ত হয় এবং কেবলমাত্র পরিবর্তিত জিনিসগুলিকেই ওভাররাইড করে, যেহেতু ফাইলটি বেশিরভাগ অংশের জন্য একই থাকে।
আমি ফাইলটির কাঠামো সম্পর্কে সত্যিই মাথা ঘামাই না, কারণ এটি ইতিমধ্যে সিদ্ধান্ত নিয়েছে যে আমরা এক্সএমএল ব্যবহার করব, এবং প্রাথমিক স্কিমাটি ইতিমধ্যে সিদ্ধান্ত নেওয়া হয়েছে। তবে ভবিষ্যতে এতে কোনও পরিবর্তন হওয়ার কোনও সন্দেহ নেই এবং আমি কেবল কোডটি এমনভাবে ডিজাইন করতে সক্ষম হতে চাই যাতে এই পরিবর্তনগুলি সামঞ্জস্য করা সহজ হয়।