Saya sedang mengerjakan kode UI di mana saya memiliki Action
kelas, sesuatu seperti ini -
public class MyAction extends Action {
public MyAction() {
setText("My Action Text");
setToolTip("My Action Tool tip");
setImage("Some Image");
}
}
Ketika kelas Action ini dibuat, cukup banyak diasumsikan bahwa Action
kelas tidak akan dikustomisasi (dalam arti - teks, tooltip atau gambar tidak akan diubah di mana pun dalam kode). Sekarang, kita perlu mengubah teks tindakan di beberapa lokasi dalam kode. Jadi, saya menyarankan rekan kerja saya untuk menghapus teks tindakan hardcode dari konstruktor dan menerimanya sebagai argumen, sehingga semua orang dipaksa untuk melewati teks tindakan. Sesuatu seperti kode di bawah ini -
public class MyAction extends Action {
public MyAction(String actionText) {
setText(actionText);
setTooltip("My Action tool tip");
setImage("My Image");
}
}
Dia, bagaimanapun, berpikir bahwa karena setText()
metode milik kelas dasar dapat secara fleksibel digunakan untuk melewatkan teks tindakan di mana pun instance tindakan dibuat. Dengan begitu, tidak perlu mengubah MyAction
kelas yang ada . Jadi kodenya akan terlihat seperti ini.
MyAction action = new MyAction(); //this creates action instance with the hardcoded text
action.setText("User required new action text"); //overwrite the existing text.
Saya tidak yakin apakah itu cara yang benar untuk menangani masalah. Saya pikir dalam kasus yang disebutkan di atas pengguna tetap akan mengubah teks, jadi mengapa tidak memaksanya saat membangun tindakan? Satu-satunya manfaat yang saya lihat dengan kode asli adalah pengguna dapat membuat kelas Tindakan tanpa banyak berpikir tentang pengaturan teks.