Monday, October 25, 2010

Factory. Loại: Creation. Độ khó: Trung bình

Factory là 1 nhà máy sản xuất. Ý tưởng đưa ra là 1 nhà máy có thể sản xuất ra nhiều loại đối tượng khác nhau tùy theo yêu cầu đầu vào.
Ví dụ, ta có lớp Namer có 2 thuộc tính: First Name và Last Name. Tùy theo văn hóa từng nước mà thứ tự của First Name và Last Name sẽ xuất hiện khác nhau. Giả sử ta có 2 lớp con của Namer là FirstNameFirst và LastNameFirst. Hai lớp này sẽ căn cứ vào chuỗi tên truyền vào, bóc tách ra họ, tên, sau đó gán vào 2 thuộc tính firstName và lastName.

public class Namer {
protected String firstName;
protected String lastName;
}

public class LastFirst extends Namer {

public LastFirst(String fullName) {
int i = fullName.indexOf(",");
if(i>0)
{
lastName = fullName.substring(0,i);
firstName = fullName.substring(i+1, fullName.length());
}
else
{
lastName = fullName;
firstName = "";
}
}
}


public class FirstFirst extends Namer {

public FirstFirst(String fullName) {

int i = fullName.indexOf(" ");
if (i > 0) {
firstName = fullName.substring(0, i + 1);
lastName = fullName.substring(i, fullName.length());
} else {
lastName = fullName;
firstName = "";
}
}

}

Ta dùng 1 factory ở đây để trả về đối tượng phù hợp căn cứ vào dữ liệu đầu vào:
public class FactoryNamer {

public Namer getNamer(String enterText)
{
if(enterText.indexOf(",")>0)
return new LastFirst(enterText);
else
return new FirstFirst(enterText);
}
}


No comments:

Post a Comment