State Pattern

Posted by:

State: internal state object defines current behavior. The state changes, the behavior changes. Thay vì dùng if else bên ngoài, ta dùng state bên trong.

[code lang=”java”] public static void main(String[] args) {
Birth birth = new Birth();

}

public class Birth {

private State state; // interface

public Birth() {
state = new HappyState(this);
}

/**
* Makes time pass for the mammoth
*/
public void timePasses() {
if (state.getClass().equals(HappyState.class)) {
changeStateTo(new AngryState(this));
} else {
changeStateTo(new HappyState(this));
}
}

private void changeStateTo(State newState) {
this.state = ...

Đọc tiếp
0

Mediator Pattern

Posted by:

Mediator: đóng gói tất cả objects cần tương tác, các object không tương tác trực tiếp với nhau mà thông qua mediator object, dễ thay đổi, cách implement khá giống với Observer, thấy có thêm parameter và luôn có interface cho client.

[code lang=”java”] public class App {

public static void main(String[] args) {

// create party and members
Party party = new PartyImpl();
Hobbit hobbit = new Hobbit();
Wizard wizard = new Wizard();
Rogue rogue = new Rogue();
Hunter hunter = new Hunter();

// ...

Đọc tiếp
0

Chain of Responsibility Pattern

Posted by:

Chain of Repository: giống như servlet filters, mỗi khi có request sẽ chạy qua tất cả Filters.
Hiện thưc Chain: giống như liên kết đơn, mỗi khi có Filter nào handle request đó sẽ dừng.

Code chỉ là ý tưởng, mình viết trên giấy nên chắc là ko run dc 😀

[code lang=”java”] public class App {
public static void main(String[] args) {
OrcKing king = new OrcKing();
king.makeRequest(new Request(RequestType.A, "go to supuermaker"));
king.makeRequest(new Request(RequestType.B, "go to Ha Long"));
king.makeRequest(new Request(RequestType.C, "come back"));

}
Đọc tiếp

1

Observer Pattern

Posted by:

Observer: An object notifies other object(s) if it changes

ngữ cảnh: được sử dụng khi nhấn subscriber 1 channel youtube nào đó, email của bạn sẽ được add vào List. Mỗi khi có video mới thì sẽ gởi email thông báo đến bạn.

Cách hiện thực: là tạo List<Interface> lưu những email đó, mỗi khi có người nhấn subscriber thì sẽ add email người đó vào, mỗi khi channel có thêm 1 video thì sẽ send email.

[code lang=”java”] public class App {
public ...Đọc tiếp
1