আমি একটি টিডিডি প্রকল্পে আছি, তাই আমি সেই ধরণের বিকাশের সাথে জড়িত ভাল অভ্যাসগুলিতে যথাসম্ভব আঁকড়ে থাকার চেষ্টা করি। তার মধ্যে একটি যথাসম্ভব স্থির এবং বিশ্বব্যাপী এড়ানো হচ্ছে।
আমি এই সমস্যার মুখোমুখি হচ্ছি: আমি একটি বস্তু "নিবন্ধ" এর সাথে "অপশন" (সংযোজনীয় "মাইক্রো-আর্টিকেল") যুক্ত থাকতে পারি।
আমি কীভাবে একটি ভাল পদ্ধতির কীভাবে উত্পাদনশীল হতে পারি না বা খুব বেশি প্রশ্ন তৈরি করতে পারি তা বুঝতে পারি না কারণ আমি এমন পরিস্থিতিতে থাকি যেখানে সবকিছু এতই ডুপ্ল্লড হয় যে আমাকে অবজেক্টে প্রতি 1 কোয়েরি করতে হবে।
আমার প্রকৃত দৃষ্টিকোণ থেকে, আমি 3 টি বিকল্প দেখতে পাচ্ছি:
1) নিবন্ধের ভিতরে তৈরি করুন:
class Article
{
//[...]
public function getArrOption(){
//Build an array of Options instance.
//return an array of Options.
}
}
প্রো: সরাসরি এগিয়ে
কনস্ট: রক্ষণাবেক্ষণ: নিবন্ধের অবজেক্টে এখন অপশন অবজেক্টের জন্য বিল্ডিং লজিক রয়েছে। এটি সম্ভবত কোড সদৃশ দিকে পরিচালিত করবে।
2) একটি বিকল্প কারখানা ব্যবহার করে
class Article
{
//[...]
public function getArrOption(){
return OptionFactory::buildFromArticleId($this->getId());
}
}
প্রো: বিল্ডিং লজিক নিবন্ধ শ্রেণীর বাইরে নয়
কনস্ট: আমি "স্ট্যাটিককে ঠাট্টা করা শক্ত" নিয়ম ভঙ্গ করছি, আমার নিবন্ধের ক্লাসটি পরীক্ষা করা শক্ত করে তুলছে।
3) সমস্ত লজিক পৃথক।
//Build the array of Option instance in a controller somewhere, using a Factory:
$arrOption = OptionFactory::buildFromArticleId($article->getId());
প্রো: আর্টিকেলটি কেবল তার নিজস্ব দায়বদ্ধতা পরিচালনা করে এবং বিকল্পগুলির সাথে তার "পিতা" লিঙ্কটি যত্ন করে না। বিষয়গুলি সত্যই ডিউপলড
কনস্ট: নিয়ন্ত্রকের অভ্যন্তরে আরও কোড প্রয়োজন হবে আমাকে বিকল্পগুলি অ্যাক্সেস করতে হবে। এর অর্থ হ'ল আমার কখনই কোনও জিনিসের অভ্যন্তরে কারখানা ব্যবহার করা উচিত নয় , এবং আমার কাছে এই ধরণের ধরণের ইউটোপিক ...
সবচেয়ে ভাল উপায় কি? (আমি কি কিছু মিস করেছি?) ধন্যবাদ
সম্পাদনা:
ক্লাসের অভ্যন্তরে যদি আমি কারখানাকে কল করতে না পারি, তবে আমি প্রাথমিকভাবে অলস সূচনা প্যাটার্নটি কখনও ব্যবহার করতে পারি না তা উল্লেখ করার দরকার নেই ...