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

Builder Pattern

Posted by:

Builder Patterns: constructor có quá nhiều parameters, dùng builder để group lại cho dễ sử dụng.

[code lang=”java”] public class Hero {
private final String name;
private final String weapon;
private final String armor;

// get, set

public Hero(Builder builder) {
this.name = builder.name;
this.weapon = builder.weapon;
this.armor = ...

Đọc tiếp
1

Design Patterns

Posted by:

Tổng hợp những bài viết về Design Pattern

I/ Creational Patterns (6)
Singleton: hạn chế việc khởi tạo nhiều Objects
Builder: constructor có quá nhiều parameters, dùng builder để group lại
– Factory: như nhà máy sản xuất, chỉ cần cho đúng nguyên liệu thì sẽ cho ra đúng sản phẩm.
– Factory Method: (1 method cho nhiều interface implements)
– Abstract Factory: giống Factory nhưng trả về Abstract
– Prototype (Clone)

II/ Structural Patterns (7)
Đọc tiếp

0

Design Pattern: Proxy

Posted by:

Định nghĩa:

Proxy tiếng Anh có nghĩa là người được ủy nhiệm. Khi việc khởi tạo 1 đối tượng mất nhiều thời gian ví dụ như đọc file từ ổ đĩa hoặc load file từ Internet, chương trình sẽ tạo 1 file giả. Đến khi cần sử dụng thực sự file này thì lúc đó file có thể đã được load xong. Ví dụ như ở trình duyệt, khi load 1 trang web trình duyệt sẽ hiện các image holder trước ...

Đọc tiếp
0

Design Pattern: Facade

Posted by:

Định nghĩa: Facade, đọc là fei sơ, có ý nghĩa như 1 bộ khung. Ví dụ như trong 1 máy tính sẽ có các bộ phận khác nhau như CPU, RAM, Harddrive. Khi bật nút power, các đối tượng như CPU, RAM, và Hard drive sẽ tự động thực hiện các công việc của mình.

[code lang=”java”]

public class Computer {
private CPU cpu;
private RAM ram;
private HardDrive hardDrive;

public Computer() ...

Đọc tiếp
0
Page 1 of 3 123