Design Pattern: Abstract Factory

Định nghĩa:

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.

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();
}

Nguồn: http://javadevelopervietnam.blogspot.com/2010/10/abstract-factory-loai-creation-o-kho.html

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s