ডেটা অ্যাক্সেস / ব্যবসায়িক অবজেক্টের জন্য অ্যাক্টিভেকর্ড প্যাটার্নটি ব্যবহার করার ক্ষেত্রে কী কী ত্রুটি রয়েছে তা আমি আগ্রহী। আমার মাথার উপরের অংশটি কেবলমাত্র আমিই ভাবতে পারি যে এটি একক দায়িত্বের নীতি লঙ্ঘন করে, তবে এআর প্যাটার্নটি যথেষ্ট সাধারণ যে এই কারণটি ব্যবহার না করে ন্যায়সঙ্গত করার জন্য এই কারণটি একা "যথেষ্ট যথেষ্ট" বলে মনে হয় না (অবশ্যই আমার দৃশ্য প্রায়ই কোড আমি কাজ অনুসরণ সঙ্গে কেউ যেহেতু স্কিউ হতে পারে কোনো কঠিন নীতির)।
ব্যক্তিগতভাবে আমি না কারণ এটি বর্গ মত আর খুব বেশী করছে (ক উপর রুবি পাগল আবেদন, যেখানে শিরোণামে মতানুযায়ী "স্বাভাবিক" লেখা বাদে) ActiveRecord একটি পাখা, এবং তথ্য অ্যাক্সেস বর্গ নিজেই পর্যন্ত করা উচিত হবে না পরিচালনা করতে. আমি ব্যবসায়িক বিষয়গুলি ফেরত দেওয়ার জন্য সংগ্রহস্থলগুলি ব্যবহার করতে পছন্দ করি। আমি যে কোডটি নিয়ে কাজ করি সেগুলির বেশিরভাগটিতে অ্যাক্টিভেকর্ডের একটি প্রকরণটি ব্যবহার করা হয়, (এই পদ্ধতিটি কেন বুলিয়ান তা আমি জানি না):
public class Foo
{
// properties...
public Foo(int fooID)
{
this.fooID = fooID;
}
public bool Load()
{
// DB stuff here...
// map DataReader to properties...
bool returnCode = false;
if (dr.HasRows)
returnCode = true;
return returnCode;
}
}
বা কখনও কখনও public static Foo FindFooByID(int fooID)
সন্ধানকারীদের জন্য পদ্ধতি এবং public void Save()
সংরক্ষণ / আপডেটের রেখার পাশাপাশি কিছু "প্রথাগত" হওয়ার উপায় ।
আমি পেয়েছি যে অ্যাক্টিভেকর্ডটি সাধারণত প্রয়োগ এবং ব্যবহারের জন্য খুব সহজ , তবে জটিল অ্যাপ্লিকেশনগুলির জন্য এটি কিছুটা সহজ বলে মনে হয় এবং কোনও রেপোসটরিতে আপনার ডেটা অ্যাক্সেস লজিককে আবদ্ধ করে আপনি আরও শক্তিশালী আর্কিটেকচারটি পেতে পারেন (এটিকে সোজা আউট করার পক্ষে সহজ কথা বলার অপেক্ষা রাখে না) ডেটা অ্যাক্সেস কৌশলগুলি উদাহরণস্বরূপ আপনি স্টোরড প্রোকস + ডেটাসেটগুলি ব্যবহার করতে পারেন এবং লিনকিউ বা কিছুতে স্যুইচ করতে চান)
তাহলে এই প্যাটার্নের অন্যান্য কী কী ত্রুটি রয়েছে যেগুলি যদি সিদ্ধান্ত নেওয়ার সময় অ্যাক্টিভেকর্ডটি সেরা প্রার্থী হয় তবে তা বিবেচনা করা উচিত?