ডিএফএ দ্বারা সহজ এবং স্পষ্টভাবে প্রদর্শিত হিসাবে একটি ইন্টারফেস বাস্তবায়ন পরিষ্কার এবং মার্জিত (এবং "সরকারীভাবে" সমর্থিত উপায়)। এটি ইন্টারফেস ধারণাটির জন্য কী বোঝায়।
সি # তে আমরা এমন প্রোগ্রামারদের জন্য প্রতিনিধিদের ব্যবহার করতে পারি যারা সিতে ফান্টন পয়েন্টার ব্যবহার করতে পছন্দ করে তবে ডিএফএ এর কৌশলটি ব্যবহারের উপায়।
আপনারও অ্যারে থাকতে পারে
Command[] commands =
{
new CommandA(), new CommandB(), new CommandC(), ...
}
তারপরে আপনি সূচক অনুসারে একটি আদেশ কার্যকর করতে পারেন
commands[7].exec();
ডিএফএ এর কাছ থেকে চুরি করা, তবে ইন্টারফেসের পরিবর্তে একটি বিমূর্ত বেস ক্লাস করা। সেমিডিকি লক্ষ্য করুন যা পরে ব্যবহৃত হবে। অভিজ্ঞতার দ্বারা, আমি বুঝতে পারি যে প্রায়শই একটি সরঞ্জাম কমন্ডের সাব-কম্যান্ডগুলিও থাকে।
abstract public class Command()
{
abstract public byte exec(String subCmd);
public String cmdKey;
public String subCmd;
}
আপনার আদেশগুলি এভাবে তৈরি করুন,
public class CommandA
extends Command
{
public CommandA(String subCmd)
{
this.cmdKey = "A";
this.subCmd = subCmd;
}
public byte exec()
{
sendWhatever(...);
byte status = receiveWhatever(...);
return status;
}
}
এরপরে আপনি কী-ভ্যালু জুটি চুষার ক্রিয়াকলাপ সরবরাহ করে জেনেরিক হ্যাশম্যাপ বা হ্যাশ টেবিল প্রসারিত করতে পারেন:
public class CommandHash<String, Command>
extends HashMap<String, Command>
(
public CommandHash<String, Command>(Command[] commands)
{
this.commandSucker(Command[] commands);
}
public commandSucker(Command[] commands)
{
for(Command cmd : commands)
{
this.put(cmd.cmdKey, cmd);
}
}
}
তারপরে আপনার কমান্ড স্টোরটি তৈরি করুন:
CommandHash commands =
new CommandHash(
{
new CommandA("asdf"),
new CommandA("qwerty"),
new CommandB(null),
new CommandC("hello dolly"),
...
});
এখন আপনি নিয়ন্ত্রণমূলকভাবে পাঠাতে পারেন could
commands.get("A").exec();
commands.get(condition).exec();