Monday, October 25, 2010

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

Abstract Factory trừu tượng hơn Factory 1 mức. Thay vì chỉ cần 1 interface Factory, pattern này đòi hỏi thêm 2 lớp Factory hiện thực interface này. Ví dụ interface Factory có 1 phương thức là createButton(), 2 lớp hiện thực là WindowFactory và MacFactory. Hai lớp này sẽ trả về lần lượt 2 đối tượng là WindowButton và MacButton tương ứng. Trong đó WindowButton và MacButton lần lượt là 2 lớp hiện thực của interfact Button.

Code mẫu:
public interface Button {
void paint();
}

public class OSXButton implements Button{
public void paint() {
System.out.println("Draw OSX button");
}
}

public class WindowButton implements Button {
public void paint() {
System.out.println("Drawing Window button");
}
}

public interface Factory {
Button createButton();
}

public class WindowFactory implements Factory {

public Button createButton() {
return new WindowButton();
}
}

public class OSXFactory implements Factory {
public Button createButton() {
return new OSXButton();
}
}

Chạy test:
public static void main(String[] args) {
Factory factory = new WindowFactory();
Button button = factory.createButton();
button.paint();
}

No comments:

Post a Comment