[Tut 4 - Design Pattern] Proxy

Pattern Proxy là gì?

- Mẫu Proxy (người đại diện) đại diện cho 1 chức năng của lớp khác. Bạn có thể hiểu, ta thuê 1 luật sư về đại diện cho ta, người luật sư này có thể dùng các quyền của mình một cách gián tiếp để nói cho các người khác một cách chính xác vì luật sư am hiểu về pháp luật hơn mình.

Khi nào dùng nó?

- Khi bạn muốn bảo vệ quyền truy xuất vào các chức năng (phương thức) của thực thể.
- Bổ sung trước khi thực hiện phương thức của thực thể.
- Tạo đối tượng với chức năng được nâng cao theo yêu cầu.

Dùng nó như thế nào?

Tôi sẽ xây dựng một ví dụ đơn giản như sau:

- Tôi có 1 inteface mô tả chức năng của một class:

public interface ReadFile {    
    public String readFile();
}

Tiếp theo tạo class User triển khai interface trên:
public class User implements ReadFile {    
    private String name; // Tên của người dùng
 
 
    public User(String name) {
        this.name = name;
    }
 
 
    @Override
    public String readFile() { 
        // Phương thức đọc file return name + "readed";
    }
}

Và một class Proxy đại diện cho lớp User:
public class UserProxy implements ReadFile {    
    private ReadFile instance;
    private String name;
 
 
    public UserProxy(String name) {
        this.name = name;
    }
 
 
    @Override
    public String readFile() {
        if (name.equals("ok")) { // nêu tên người dùng là ok thì mới thực hiện
                                    // phương thức của lớp User, không thì báo
                                    // lỗi! if(instance ==null){
            instance = new User(name);
            return instance.readFile();
        }
        return "You can't read file";
    }
}

Thử chạy chương trình test như sau:
public class Main {    
    public static void main(String[] args) {
         
        UserProxy user1 = new UserProxy("ok");
        System.out.println(user1.readFile());
        UserProxy user2 = new UserProxy("hello");
        System.out.println(user2.readFile());
    }
}

Kết quả:
ok readed
You can't read file

Trên chỉ là một ví dụ nhỏ về proxy, nó còn có rất nhiều cách dùng khác. Hy vọng bạn có thể nắm bắt được các mẫu thiết kế pattern bởi nó thực sự cần thiết đối với một lập trình viên.

Nhận xét

  1. How to get to the Seminole Hard Rock Hotel & Casino in
    The Seminole Hard Rock Hotel & Casino in Hollywood 영주 출장마사지 is your premier entertainment destination. is a Native American 김해 출장샵 Casino 군포 출장마사지 in 목포 출장샵 Tunica, Mississippi. 남원 출장안마

    Trả lờiXóa

Đăng nhận xét

Bài đăng phổ biến từ blog này

Base64 image – Lợi hay hại?

Hàm "tap" trong Laravel Collection