সম্প্রতি আমি ওওপির চারপাশে আমার মাথা গুটিয়ে রাখতে শুরু করেছি এবং আমি এখন এমন জায়গায় পৌঁছেছি যেখানে আমি বিমূর্ত শ্রেণি এবং ইন্টারফেসের মধ্যে পার্থক্য সম্পর্কে আরও পড়ি যত বেশি বিভ্রান্ত হয়ে পড়ি। এখনও অবধি তড়িঘড়ি করা যায় না। ইন্টারফেসগুলি কম-বেশি কাঠামোগত ব্লুপ্রিন্ট যা আংশিকভাবে কোড প্রয়োগ করতে সক্ষম হয়ে কঙ্কাল এবং বিমূর্তি নির্ধারণ করে।
আমি আমার নির্দিষ্ট পরিস্থিতির মধ্য দিয়ে এগুলি সম্পর্কে আরও জানতে চাই। আপনি যদি আরও কিছু ব্যাকগ্রাউন্ডের তথ্য চান তবে আমার প্রথম প্রশ্নের এখানে একটি লিঙ্ক: আমার নতুন ক্লাসের জন্য ভাল ডিজাইনের মডেল কী?
এখানে আমি তৈরি করেছি দুটি ক্লাস:
class Ad {
$title;
$description
$price;
function get_data($website){ }
function validate_price(){ }
}
class calendar_event {
$title;
$description
$start_date;
function get_data($website){ //guts }
function validate_dates(){ //guts }
}
সুতরাং, আপনি দেখতে পারেন এই ক্লাসগুলি প্রায় অভিন্ন। এখানে দেখানো হয়নি, তবে অন্যান্য ক্রিয়াকলাপগুলি রয়েছে like get_zip()
, save_to_database()
যা আমার ক্লাসে প্রচলিত। আমি অন্যান্য ক্লাসে গাড়ি এবং পোষা প্রাণীও যুক্ত করেছি যাগুলির সমস্ত সাধারণ পদ্ধতি রয়েছে এবং অবশ্যই সেই শ্রেণিগুলির জন্য নির্দিষ্ট বৈশিষ্ট্য রয়েছে (মাইলেজ, ওজন, উদাহরণস্বরূপ)।
এখন আমি DRY নীতি লঙ্ঘন করেছি এবং আমি একাধিক ফাইল জুড়ে একই কোড পরিচালনা ও পরিবর্তন করছি। আমি নৌকা, ঘোড়া, বা যাই হোক না কেন আরও ক্লাস করার ইচ্ছা করি।
সুতরাং আমি এখানে একটি ইন্টারফেস বা বিমূর্ত শ্রেণি ব্যবহার করব? বিমূর্ত শ্রেণীর বিষয়ে আমি যা বুঝি সেগুলি থেকে আমি বিমূর্ত শ্রেণিতে অন্তর্ভুক্ত সমস্ত সাধারণ উপাদানগুলির সাথে একটি টেম্পলেট হিসাবে একটি সুপার ক্লাস ব্যবহার করব এবং তারপরে ভবিষ্যতের ক্লাসগুলিতে বিশেষভাবে প্রয়োজনীয় আইটেমগুলি যুক্ত করব। উদাহরণ স্বরূপ:
abstract class content {
$title;
$description
function get_data($website){ }
function common_function2() { }
function common_function3() { }
}
class calendar_event extends content {
$start_date;
function validate_dates(){ }
}
অথবা আমি কোনও ইন্টারফেস ব্যবহার করব এবং, কারণ এগুলি এতটাই সমান, এমন একটি কাঠামো তৈরি করে যা প্রতিটি উপশ্রেণীর সততা কারণে ব্যবহার করতে বাধ্য করা হয়, এবং এটি শেষ বিকাশকারী পর্যন্ত ছেড়ে দেয় যারা এই শ্রেণীর প্রতিটিটির জন্য দায়বদ্ধ হওয়ার জন্য ঝাঁকিয়ে পড়ে out এমনকি সাধারণ কার্যকারিতা বিশদ। আমার চিন্তাভাবনাটি হ'ল ভবিষ্যতে তাদের নির্দিষ্ট শ্রেণীর প্রয়োজনের জন্য কিছু 'সাধারণ' ফাংশনগুলি টিক করা দরকার।
সর্বোপরি এই সমস্ত কিছু সত্ত্বেও, আপনি যদি বিশ্বাস করেন যে আমি পুরোপুরি বিমূর্ত শ্রেণি এবং ইন্টারফেসগুলির কী এবং কেন ভুল বোঝাবুঝি করছি, তবে কোনও উপায়েই এই দিক থেকে চিন্তাভাবনা বন্ধ করে দেওয়া এবং সঠিক পথে এগিয়ে যাওয়ার জন্য একটি বৈধ উত্তর দেওয়া উচিত!
ধন্যবাদ!