আমি একটি ইউআই কোড নিয়ে কাজ করছি যেখানে আমার Action
ক্লাস রয়েছে, এরকম কিছু -
public class MyAction extends Action {
public MyAction() {
setText("My Action Text");
setToolTip("My Action Tool tip");
setImage("Some Image");
}
}
যখন এই অ্যাকশন শ্রেণিটি তৈরি করা হয়েছিল, তখন এটি বেশ অনুমান করা হয়েছিল যে Action
শ্রেণিটি অনুকূলিতকরণযোগ্য হবে না (এক অর্থে - এর পাঠ্য, সরঞ্জামদণ্ড বা চিত্র কোডের কোথাও পরিবর্তন করা হবে না)। এখন, আমাদের কোডের কিছু জায়গায় ক্রিয়া পাঠ্য পরিবর্তন করার প্রয়োজন রয়েছে। সুতরাং, আমি আমার সহকর্মীকে পরামর্শ দিয়েছিলাম যে কন্সট্রাক্টর থেকে হার্ডকোডযুক্ত ক্রিয়া পাঠ্য সরিয়ে ফেলা এবং এটি একটি যুক্তি হিসাবে গ্রহণ করুন, যাতে প্রত্যেকে কর্মের পাঠ্য পাস করতে বাধ্য হয়। নীচে এই কোড মত কিছু -
public class MyAction extends Action {
public MyAction(String actionText) {
setText(actionText);
setTooltip("My Action tool tip");
setImage("My Image");
}
}
তিনি অবশ্য মনে করেন যেহেতু setText()
পদ্ধতিটি বেস শ্রেণীর অন্তর্গত, যেখানেই অ্যাকশন উদাহরণ তৈরি করা হয়েছে সেখানে এটি অ্যাক্সেস টেক্সট পাস করার জন্য নমনীয়ভাবে ব্যবহার করা যেতে পারে। এইভাবে, বিদ্যমান MyAction
শ্রেণিটি পরিবর্তন করার দরকার নেই । সুতরাং তার কোডটি দেখতে এরকম কিছু হবে।
MyAction action = new MyAction(); //this creates action instance with the hardcoded text
action.setText("User required new action text"); //overwrite the existing text.
সমস্যাটি মোকাবেলার জন্য যদি এটি সঠিক উপায় হয় তবে আমি নিশ্চিত নই। আমি মনে করি উপরে বর্ণিত কেসটিতে ব্যবহারকারী যেভাবেই টেক্সট পরিবর্তন করতে চলেছে, তাই অ্যাকশনটি নির্মাণের সময় কেন তাকে জোর করবেন না? মূল কোডটি দিয়ে আমি কেবল উপকারটি দেখছি যে ব্যবহারকারী পাঠ্য নির্ধারণের বিষয়ে বেশি চিন্তা না করে অ্যাকশন শ্রেণি তৈরি করতে পারে।