lập trình hướng khía cạnh AOP

Lập trình hướng khía cạnh AOP

Thế nào là lập trình hướng khía cạnh (Aspect Oriented Programming)

Lập trình hướng khía cạnh Aspect Oriented Programming viết tắt là AOP, là một xu hướng lập trình mới. Lập trình hướng khía cạnh Aspect Oriented Programming ra đời nhằm sử dụng hiệu quả của Object-oreted programming (OOP) và tăng cường tối đa khả năng tái sử dụng của mã nguồn. AOP không thay thế cho OOP mà AOP phát triển dựa trên OOP. OOP là mô hình phát triển được lựa chọn cho hầu hết các dự án phần mềm. Nếu như OOP hữu hiệu trong việc lập mô hình hành vi chung của các đối tượng tuy nhiên nó không giải quyết thỏa đáng những hành vi liên quan đến đối tượng, thì AOP giải quyết được vấn đề này và rất có thể sẽ có bước phát triển lớn kế tiếp trong phương pháp lập trình.

Ưu điểm của lập trình hướng khía cạnh AOP

 lập trình hướng khía cạnh AOP
lập trình hướng khía cạnh AOP

Ưu điểm đầu tiên của lập trình hướng khía cạnh AOP là thiết kế đơn giản: “You aren’t gonna need it (YAGNI)” – người dùng chỉ cài đặt những thứ mà họ thực sự cần mà không bao giờ cài đặt trước.

Ưu điểm thứ hai của lập trình hướng khía cạnh AOP là cài đặt chương trình một cách trong sáng: mỗi một module chỉ làm cái mà nó cần phải làm, giải quyết được hai vấn đề code tangling và code scattering

Ưu điểm thứ ba chính là tái sử dụng dễ dàng.

Những yêu cầu mà người lập trình hướng khía cạnh AOP cần có đó là có kỹ năng cao: độ trừu tượng của chương trình cao, và phải xử lý luồng chương trình phức tạp.

Một số thuật ngữ mới trong lập trình hướng khía cạnh AOP đó là 

– Thuật ngữ core concerns: hàm chính của chương trình

– Thuật ngữ crossutting concerns: những chức năng khác của của chương trình, ví dụ như security, logging, tracing, monitoring..

– Thuật ngữ join points: một điểm của chương trình, là nơi có thể chèn những custom action của bạn.

– Thuật ngữ pointcut: có nhiều cách để xác định joinpoint, những cách như thế được gọi là pointcut.

– Thuật ngữ advice: những code xử lý phụ gọi là advice được thêm vào xử lý chính.

 

Leave a Reply

Your email address will not be published. Required fields are marked *