Thursday, March 24, 2005

Joda Bean

อยู่ที่ Joda
หลายคนที่เคยเขียน UI คงเคยรู้ว่ามีแนวทางในการ
ส่ง business object ไปยัง UI layer อยู่ 2 พวกคือ
  • พวกที่นิยม Type Safe พวกนี้จะใช้ Java Bean
  • พวกที่นิยม Generic พวกนี้จะใช้ HashMap

จุดเด่นของพวก generic ก็คือง่ายต่อการ binding เข้ากับ UI component
ส่วนข้อเสียก็คือการเปิดโอกาสให้เกิด bug หรือ runtime error ได้ง่ายขึ้น

ตัว Joda Bean จะเป็นลูกผสมของ 2 พวกนี้
คือใช้ hashMap เป็น base class แต่ก็สามารถ
set property ในลักษณะ Type Safe ได้เช่นกัน
การเขียน Joda Bean จะเชียนดังนี้
public interface Person extends Bean {
StringProperty surname();
String getSurname();
void setSurname(String surname);
}

เราเพียงแต่เขียน interface
พอถึงเวลาใช้ ก็เพียงแต่
Person person = (Person) JodaFactory.create(Person.class);

Joda จะใช้ Java 1.3 Proxy ในการสร้าง class person ให้เรา

การนำไปใช้
กรณีที่เราต้องการ binding เข้ากับ swing JTextField
JTextField textField = new JTextField();
Person person = (Person) JodaFactory.create(Person.class);
SwingBinder binder = new SwingBinder();
binder.bind( textField, person.surname() );

Note: Joda binding ยังไม่ support พวก combobox, table component

นอกจากนี้ยังสามารถใช้ XPath ในการ access ได้ด้วย
XPath xpath = new XPath("address[2]/town/text()");
Profile profile = (Profile) JodaFactory.create(Profile.class);
String str = (String) xpath.selectSingleNode(profile);

Related link from Roti

No comments: