Kerangka kerja GUI biasanya memiliki semacam kelas 'Tampilan' yang mewakili hal-hal yang digambar di layar, dan kelas itu biasanya menyediakan metode seperti invalidateRect(Rect r)
untuk menandai bagian dari area gambarnya yang perlu digambar ulang. Klien dapat memanggil metode itu untuk meminta pembaruan ke bagian tampilan. Tetapi suatu tampilan mungkin juga memanggil metode sendiri, seperti:
invalidateRect(m_frame);
menyebabkan menggambar ulang seluruh area. Misalnya, mungkin melakukan ini ketika pertama kali ditambahkan ke hierarki tampilan.
Tidak ada yang salah dengan melakukan ini - frame view adalah persegi panjang yang valid, dan view sendiri tahu bahwa ia ingin menggambar ulang dirinya sendiri. Kelas tampilan dapat menyediakan metode terpisah yang tidak menggunakan parameter dan menggunakan bingkai tampilan sebagai gantinya:
invalidateFrame();
Tetapi mengapa menambahkan metode khusus hanya untuk ini ketika Anda dapat menggunakan yang lebih umum invalidateRect()
? Atau, jika Anda memang memilih untuk menyediakan invalidateFrame()
, kemungkinan besar Anda akan mengimplementasikannya dalam hal yang lebih umum invalidateRect()
:
View::invalidateFrame(void)
{
invalidateRect(m_frame)
}
Mengapa meneruskan variabel sebagai parameter metode, jika Anda sudah memiliki akses ke sana?
Anda harus meneruskan variabel instan sebagai parameter ke metode Anda sendiri jika metode tidak beroperasi secara khusus pada variabel instan tersebut. Pada contoh di atas, bingkai view hanyalah persegi panjang sejauh invalidateRect()
metode yang digunakan.