দুটি উপায় আছে যেখানে বিমূর্ত বেস ক্লাস ব্যবহার করা হয়।
আপনি আপনার বিমূর্ত বস্তুকে বিশেষীকরণ করছেন তবে সমস্ত ক্লায়েন্টরা এর বেস ইন্টারফেসের মাধ্যমে উত্পন্ন শ্রেণিটি ব্যবহার করবে।
আপনি আপনার ডিজাইনের বস্তুগুলির মধ্যে সদৃশকরণ তৈরি করার জন্য একটি বিমূর্ত বেস ক্লাস ব্যবহার করছেন এবং ক্লায়েন্টরা তাদের নিজস্ব ইন্টারফেসের মাধ্যমে কংক্রিট বাস্তবায়ন ব্যবহার করে!
1 এর জন্য সমাধান - কৌশল প্যাটার্ন
আপনার যদি প্রথম পরিস্থিতি থাকে তবে আপনার উত্পন্ন ক্লাসগুলি বাস্তবায়ন করছে এমন বিমূর্ত শ্রেণিতে ভার্চুয়াল পদ্ধতি দ্বারা সংজ্ঞায়িত আপনার কাছে আসলে একটি ইন্টারফেস রয়েছে।
আপনার এটিটিকে একটি বাস্তব ইন্টারফেস হিসাবে বিবেচনা করা উচিত, আপনার বিমূর্ত শ্রেণিকে কংক্রিট হিসাবে পরিবর্তন করা উচিত এবং এটির নির্মাণকারীর মধ্যে এই ইন্টারফেসের একটি উদাহরণ নেওয়া উচিত। আপনার উত্পন্ন ক্লাসগুলি তখন এই নতুন ইন্টারফেসের বাস্তবায়নে পরিণত হয়।
এর অর্থ আপনি এখন নতুন ইন্টারফেসের একটি মক উদাহরণ ব্যবহার করে এবং এখন সর্বজনীন ইন্টারফেসের মাধ্যমে প্রতিটি নতুন বাস্তবায়ন ব্যবহার করে আপনার পূর্ববর্তী বিমূর্ত শ্রেণিটি পরীক্ষা করতে পারবেন। সবকিছু সহজ এবং পরীক্ষামূলক।
সমাধান 2
আপনার যদি দ্বিতীয় পরিস্থিতি থাকে তবে আপনার বিমূর্ত শ্রেণি সহায়ক সহায়ক শ্রেণি হিসাবে কাজ করছে।
এতে থাকা কার্যকারিতাটি একবার দেখুন। দেখুন এটির কোনওটিকে এই অনুলিপিকে হ্রাস করতে ব্যবহৃত জিনিসগুলির দিকে ধাক্কা দেওয়া যায় কিনা। আপনার যদি এখনও কিছু বাকী থাকে তবে এটিকে একটি সহায়ক শ্রেণি হিসাবে দেখুন যা আপনার কংক্রিট বাস্তবায়ন তাদের নির্মাতাকে গ্রহণ করে এবং তাদের বেস শ্রেণিটি সরিয়ে দেয়।
এটি আবার কংক্রিট শ্রেণীর দিকে নিয়ে যায় যা সহজ এবং সহজেই টেস্টযোগ্য।
সচরাচর
জটিল অবজেক্টগুলির একটি সাধারণ নেটওয়ার্কের তুলনায় সাধারণ সামগ্রীর জটিল নেটওয়ার্ককে পছন্দ করুন।
এক্সটেনসিবল টেস্টেবল কোডের মূলটি হ'ল ছোট বিল্ডিং ব্লক এবং স্বতন্ত্র তারের।
আপডেট হয়েছে: উভয়ের মিশ্রণ কীভাবে পরিচালনা করবেন?
এই দুটি ভূমিকা পালনের জন্য একটি বেস শ্রেণি পাওয়া সম্ভব ... যেমন: এটির একটি সার্বজনীন ইন্টারফেস রয়েছে এবং এটি সহায়ক পদ্ধতি সুরক্ষিত করেছে। যদি এটি হয় তবে সাহায্যকারী পদ্ধতিগুলিকে এক শ্রেণিতে (দৃশ্যের 2) রূপান্তর করতে পারেন এবং উত্তরাধিকার গাছটিকে কৌশলগত প্যাটার্নে রূপান্তর করতে পারেন।
যদি আপনি দেখতে পান যে আপনার বেস ক্লাসের প্রয়োগগুলি সরাসরি এবং অন্যটি ভার্চুয়াল হয় এমন কিছু পদ্ধতি রয়েছে তবে আপনি উত্তরাধিকার গাছটিকে কৌশলগত প্যাটার্নে রূপান্তর করতে পারেন, তবে আমি এটিকে একটি ভাল সূচক হিসাবেও গ্রহণ করব যে দায়িত্বগুলি সঠিকভাবে সাজানো হয়নি, এবং হতে পারে রিফ্যাক্টরিং দরকার
আপডেট 2: পদবিন্যাস পাথর হিসাবে বিমূর্ত শ্রেণি (2014/06/12)
আমি বিমূর্ত ব্যবহার করেছি যেখানে অন্য দিন আমার একটি পরিস্থিতি ছিল, তাই আমি কেন এটি অন্বেষণ করতে চাই।
আমাদের কনফিগারেশন ফাইলগুলির জন্য আমাদের একটি মানক ফর্ম্যাট রয়েছে। এই নির্দিষ্ট সরঞ্জামটিতে 3 টি বিন্যাসে থাকা ফাইল রয়েছে। আমি প্রতিটি সেটিং ফাইলের জন্য দৃ strongly়ভাবে টাইপ করা ক্লাস চেয়েছিলাম, তাই নির্ভরতা ইনজেকশনের মাধ্যমে একটি শ্রেণি তার যত্ন নেওয়া সেটিংসের জন্য জিজ্ঞাসা করতে পারে।
আমি এটি একটি অ্যাবস্ট্রাক্ট বেস ক্লাস করে প্রয়োগ করেছি যা কীভাবে সেটিংস ফাইলের ফর্ম্যাটগুলি পার্স করতে হয় এবং যে একই পদ্ধতিগুলি উদ্ঘাটিত করে সেগুলি উত্পন্ন ক্লাস, তবে সেটিংস ফাইলের অবস্থানের অবস্থান সম্পর্কে আলোচনা করে knows
আমি একটি "সেটিংসফাইলপার্সার" লিখতে পারতাম যা 3 টি ক্লাস মোড়ানো ছিল এবং তারপরে ডেটা অ্যাক্সেসের পদ্ধতি প্রকাশ করার জন্য বেস ক্লাসের মাধ্যমে প্রেরণ করা হয়েছিল। আমি এখনও এটি না করার জন্য বেছে নিয়েছি কারণ এতে 3 টি উদ্ভূত শ্রেণীর সাথে অন্য কোনও কিছুর চেয়ে আরও বেশি প্রতিনিধি কোড রয়েছে।
তবে ... এই কোডটি যেমন বিকশিত হয় এবং এই সেটিংসের প্রতিটি ক্লাসের গ্রাহকগণ আরও স্পষ্ট হয়ে ওঠে। প্রতিটি সেটিংস ব্যবহারকারীরা কিছু সেটিংসের জন্য জিজ্ঞাসা করবেন এবং কিছু উপায়ে তাদের রূপান্তরিত করবেন (সেটিংস পাঠ্য হওয়ায় তারা এগুলিকে সংখ্যায় রূপান্তর করতে পারে এমন বস্তুগুলিতে এগুলি আবদ্ধ করতে পারে)। এটি হওয়ার সাথে সাথে আমি এই যুক্তিটি ডেটা ম্যানিপুলেশন পদ্ধতিতে বের করতে শুরু করব এবং দৃ back়ভাবে টাইপ করা সেটিংস ক্লাসগুলিতে তাদের পিছনে ঠেলে দেব। এটি সেটিংসের প্রতিটি সেটের জন্য একটি উচ্চ স্তরের ইন্টারফেসের দিকে নিয়ে যাবে, যা অবশেষে সচেতন নয় যে এটি 'সেটিংস' নিয়ে কাজ করে।
এই মুহুর্তে দৃ strongly়ভাবে টাইপ করা সেটিংস ক্লাসগুলির আর "গেটর" পদ্ধতির প্রয়োজন হবে না যা অন্তর্নিহিত 'সেটিংস' বাস্তবায়ন প্রকাশ করে।
এই মুহুর্তে আমি আর চাই না যে তাদের সর্বজনীন ইন্টারফেসটি সেটিংস অ্যাকসেসর পদ্ধতিগুলি অন্তর্ভুক্ত করতে পারে; সুতরাং আমি এই শ্রেণিটি থেকে সেটিংস পরিবর্তে একটি সেটিংস পার্সার ক্লাসকে এমপ্ল্যাপুলেটে পরিবর্তন করব।
বিমূর্ত শ্রেণিটি হ'ল: আমার পক্ষে এই মুহুর্তে প্রতিনিধি কোড এড়ানোর একটি উপায় এবং কোডটিতে একটি মার্কার আমাকে পরে নকশাটি পরিবর্তনের জন্য মনে করিয়ে দেওয়ার জন্য। আমি এটিতে কখনও যেতে পারি না, তাই এটি খুব ভাল সময় বেঁচে থাকতে পারে ... কেবল কোডটি বলতে পারে।
আমি এটি কোনও নিয়মের সাথে সত্য বলে মনে করি ... যেমন "কোনও স্থিতিশীল পদ্ধতি নেই" বা "কোনও ব্যক্তিগত পদ্ধতি নেই"। তারা কোডে একটি গন্ধ নির্দেশ করে ... এবং এটি বেশ ভাল। এটি আপনাকে যে বিমূর্ততাটি মিস করেছে তা সন্ধান করতে সহায়তা করে ... এবং আপনাকে আপনার গ্রাহকের মাঝামাঝি সময়ে মূল্য প্রদান করতে দেয়।
আমি এই জাতীয় নিয়মগুলি কল্পনা করি যে এটি ল্যান্ডস্কেপ সংজ্ঞায়িত করে, যেখানে রক্ষণাবেক্ষণযোগ্য কোড উপত্যকায় থাকে। আপনি নতুন আচরণ যুক্ত করার সাথে সাথে এটি আপনার কোডে বৃষ্টি অবতরণের মতো। প্রথমদিকে আপনি এটি যেখানেই অবতরণ করুন সেখানে রাখুন .. তারপরে আপনি ভাল ডিজাইনের বাহিনীকে আচরণের দিকে ধাক্কা দেওয়ার অনুমতি দেওয়ার জন্য চুল্লিটি সমস্ত উপত্যকাগুলিতে শেষ না হওয়া পর্যন্ত।