Bài viết này cần thêm chú thích nguồn gốc để kiểm chứng thông tin. |
Trong lập trình hướng đối tượng, facade pattern là một mẫu thiết kế phần mềm nhằm cung cấp một giao diện (interface) đơn giản giúp che giấu phần mã cấu trúc phức tạp phía sau, ví dụ như là một thư viện lớp (class library ). Facade pattern có thể:
Facade thường được sử dụng trong việc thực thi các cuộc gọi từ xa đòi hỏi tiêu tốn nhiều tài nguyên (thời gian và năng lượng tính toán).[1]
Nó cũng được sử dụng trên 1 hệ thống với nhiều triển khai phức tạp nhằm mục đích ẩn đi sự phức tạp đó, giúp lập trình viên tập trung vào mục đích thay vì hành vi của các chức năng.
Ví dụ sau đây cung cấp một facade đơn giản hơn trên các hành vi phúc tạp:
/* Complex parts */
class CPU {
public void freeze() { ... }
public void jump(long position) { ... }
public void execute() { ... }
}
class Memory {
public void load(long position, byte[] data) { ... }
}
class HardDrive {
public byte[] read(long lba, int size) { ... }
}
/* Facade */
class ComputerFacade {
private CPU processor;
private Memory ram;
private HardDrive hd;
public ComputerFacade() {
this.processor = new CPU();
this.ram = new Memory();
this.hd = new HardDrive();
}
public void start() {
processor.freeze();
ram.load(BOOT_ADDRESS, hd.read(BOOT_SECTOR, SECTOR_SIZE));
processor.jump(BOOT_ADDRESS);
processor.execute();
}
}
/* Client */
class You {
public static void main(String[] args) {
ComputerFacade computer = new ComputerFacade();
computer.start();
}
}