আমার একটি প্রকল্প রয়েছে যেখানে আমার দুটি ক্লাস রয়েছে যা উভয়েরই একই ডাটাবেসের অ্যাক্সেস অবজেক্টের প্রয়োজন যা একই টেবিলটি আপডেট করে। কাঠামো এবং প্রকল্পের সীমাবদ্ধতাগুলি এটি তৈরি করে যাতে আমি এই দুটি ক্লাস একত্রিত করতে না পারি। আমি নীচে একটি কেস তৈরি করেছি যা দেখায় যে সেটআপটি কেমন। ক্লাস এ এর রেকর্ডটি আপডেট এবং পড়তে সক্ষম হওয়া দরকার, অন্যদিকে ক্লাস বি রেকর্ডটি আপডেট এবং মুছতে সক্ষম হতে হবে।
আমি যদি ক্লাসগুলি সেগুলি হিসাবে ব্যবহার করি তবে এটি ঠিক কাজ করে, তবে এই সমস্যাটি নিয়ে আমার সমস্যা হচ্ছে যে ক্লাসগুলির প্রতিটিটির কার্যকারিতা প্রয়োজন যা এটি প্রয়োগ করার জন্য ব্যবহার করছে না। উদাহরণস্বরূপ, ক্লাস এ ব্যবহার করার জন্য, আমাকে এটিকে এমন একটি দাও পাস করতে হবে যা ডিলিট ফাংশনটি কার্যকর করে, যদিও এটি কখনই ডাকা হবে না। একইভাবে, আমাকে ক্লাস বি একটি দাও পাস করতে হবে যা পঠন ফাংশন কার্যকর করে তবে এটি কখনই ডাকা হবে না।
আমি অন্যের উত্তরাধিকারসূত্রে (আইআরডিডাও, আইইউপিডেটডাও, আইডিলিটডাও যা থেকে প্রাপ্ত উত্তরাধিকারসূত্রে প্রাপ্ত ডઓস হ'ল) এর সাথে যোগাযোগ করার বিষয়ে ভেবেছিলাম, তবে এই পদ্ধতির মূলত প্রতিটি ফাংশনের সংমিশ্রণের জন্য আলাদা ইন্টারফেসের প্রয়োজন হবে (আইইউপিডেটএন্ডআরইড, আইআরএডিএন্ডডিলিট, আইআরডিপেট ... )
আমি দাওর জন্য একটি ইন্টারফেস ব্যবহার করতে চাই কারণ আমি ডেটাবেসের সাথে অ্যাপ্লিকেশনটি জোড়া দিতে চাই না। আমি চাই যে এটি সম্পর্কে যে কেউ জানতে পারে সেগুলি সম্পাদনের জন্য কি কোনও প্যাটার্ন বা পদ্ধতি আছে? আগাম ধন্যবাদ.
class IDao {
void update(ModelDao model);
void delete(String guid);
ModelDao read(String guid);
}
Class A {
private IDao dao;
public A(IDao dao) {
this.dao = dao;
}
public void doStuff() {
ModelDao model = new ModelDao();
...
dao.update(model);
}
public void readThenDoSomething(String id) {
ModelDao model = dao.read(id);
...
}
}
Class B {
private IDao dao;
public B(IDao dao) {
this.dao = dao;
}
public void makeUpdate() {
ModelDao model = new ModelDao();
...
dao.update(model);
}
public void delete(String id) {
dao.delete(id);
}
}
I
থেকে SOLID
) এর নিখুঁত উদাহরণ । এটিতে কিছুটা পড়তে চাই।