Giới thiệu
Tôi đang triển khai một lớp Java trừu tượng của một khung xử lý *. Bằng cách thực hiện chức năng execute
, tôi có thể thêm chức năng logic kinh doanh. Tôi muốn thêm ghi nhật ký vào lúc bắt đầu và kết thúc mỗi lần thực hiện mọi chức năng thực thi của mình. Cũng ở giữa một số đăng nhập, nếu những điều cụ thể được thực hiện. Tuy nhiên, tôi muốn làm điều này một cách thống nhất. Suy nghĩ của tôi là kế thừa lớp khung thành một lớp mới riêng để thực hiện ghi nhật ký và cung cấp một số executeWithLogging
chức năng mới , bao bọc việc ghi nhật ký xung quanh các phần cụ thể. Tôi không chắc đó có phải là ý tưởng tốt nhất hay không và liệu tôi có thể sử dụng một mẫu thiết kế sẽ làm cho toàn bộ nỗ lực trở nên thanh lịch hay không. Làm thế nào tôi sẽ tiếp tục về tất cả mọi thứ?
Những thách thức (xin vui lòng xem xét những điều này!)
- Một thách thức trong trường hợp của tôi là lớp ban đầu chỉ có một
execute
chức năng, tuy nhiên, tôi cần đăng nhập xung quanh nhiều phần. - Điều thứ hai là: Sử dụng một mẫu trang trí (cũng là ý tưởng đầu tiên của tôi) không hoàn toàn hiệu quả, nếu tôi cũng đang sử dụng một
execute
, bởi vìsuper.execute()
chức năng sẽ phải được gọi trong dòng đầu tiên của cái mới của tôiexecute()
, phải không ? - Sẽ có ít nhất 4 lớp tham gia:
BaseFunction
từ khung,LoggingFunction extends BaseFunction
từ tôi,MyBusinessFunction extends LoggingFunction
từ tôi,MyBusinessClass
mà bắt nguồnMyBusinessFunction
. - Tôi không chỉ cần đăng nhập vào đầu và cuối
execute
, mà còn ở giữa. - Việc "ghi nhật ký" không chỉ là ghi nhật ký Java đơn giản, mà thực sự là ghi nhật ký vào cơ sở dữ liệu. Điều này không thay đổi bất cứ điều gì về các nguyên tắc, nhưng chứng minh rằng việc ghi nhật ký có thể không chỉ là một dòng mã.
Có lẽ một ví dụ về cách tôi làm toàn bộ mọi thứ sẽ tốt đẹp, để đưa tôi đi.
| * Chức năng Storm Trident, tương tự như Storm Storm, nhưng điều này không đặc biệt quan trọng.
execute
trong BaseFunction
trừu tượng?
execute
là trừu tượng trong BaseFunction
.