sách gpt4 ăn đã đi

Hiểu cơ chế callback trong Java (bản dịch)

In lại Tác giả: qq735679552 Thời gian cập nhật: 29-09-2022 22:32:09 33 4
mua khóa gpt4 giày nike

CFSDN nhấn mạnh vào giá trị tạo ra nguồn mở và chúng tôi cam kết xây dựng nền tảng chia sẻ tài nguyên để mọi nhân viên CNTT có thể tìm thấy thế giới tuyệt vời của bạn tại đây.

Bài viết trên blog CFSDN về tìm hiểu cơ chế callback (bản dịch) trong Java này được tác giả sưu tầm và biên soạn. Nếu các bạn quan tâm đến bài viết này thì nhớ like nhé.

Xin chào, hôm nay tôi muốn chia sẻ với bạn một điều. Ví dụ, điều này được sử dụng rất nhiều trong JavaScript. Tôi sẽ nói về cuộc gọi lại. Bạn có biết khi nào và làm thế nào để sử dụng điều này? Bạn có thực sự hiểu cách sử dụng nó trong môi trường java không? Khi tôi tự hỏi mình những câu hỏi này, đó là lý do tại sao tôi bắt đầu nghiên cứu vấn đề này. Ý tưởng đằng sau điều này là Đảo ngược điều khiển (PS: Giải thích của Wikipedia là Đảo ngược điều khiển, viết tắt là IoC), là một nguyên tắc thiết kế trong lập trình hướng đối tượng có thể được sử dụng để giảm sự ghép nối giữa các mã máy tính.) Ví dụ này. mô tả cách thức hoạt động của khuôn khổ, cũng dựa trên "nguyên tắc Hollywood - Đừng gọi cho tôi, chúng tôi sẽ gọi cho bạn" được mọi người biết đến.

Để hiểu nó, hãy sử dụng mẫu gọi lại đơn giản trong Java. Các ví dụ cụ thể như sau:

Hiểu cơ chế callback trong Java (bản dịch)

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
giao diện Gọi lại {
  vô hiệu phương thứcToCallBack();
}
 
lớp học Gọi lại thực hiện Gọi lại {
  công cộng vô hiệu phương thứcToCallBack() {
   Hệ thống.out.println( "Tôi đã được gọi lại" );
  }
}
 
lớp học Người gọi {
 
  công cộng vô hiệu đăng ký(CallBack gọi lại) {
   phương thức gọi lại để gọi lại();
  }
 
  công cộng tĩnh vô hiệu main(String[] args) {
   Người gọi người gọi = mới Người gọi();
   Gọi lại gọi lại = mới Gọi lạiImpl();
   người gọi.register(gọi lại);
  }
}

Bạn có thể muốn hỏi tôi, khi nào nên sử dụng cái này hoặc sự khác biệt giữa cơ chế gọi trực tiếp và gọi lại là gì?

Câu trả lời là: Ví dụ này chỉ cho bạn cách xây dựng hàm gọi lại như vậy trong môi trường java. Tất nhiên không có ích gì khi sử dụng nó theo cách đó. Bây giờ chúng ta hãy xem xét nó chi tiết hơn.

Ý tưởng bên trong nó là sự đảo ngược quyền kiểm soát. Hãy sử dụng đồng hồ bấm giờ làm ví dụ thực tế. Giả sử bạn biết rằng có một bộ đếm thời gian đặc biệt hỗ trợ các cuộc gọi lại hàng giờ. Nói chính xác thì có nghĩa là cứ mỗi giờ đồng hồ sẽ gọi đến phương thức gọi mà bạn đã đăng ký.

Ví dụ cụ thể:

Chúng tôi muốn cập nhật trang web mỗi giờ. Đây là ví dụ về mô hình UML:

Hiểu cơ chế callback trong Java (bản dịch)

Giao diện gọi lại:

Trước tiên hãy xác định giao diện gọi lại:

Hiểu cơ chế callback trong Java (bản dịch)

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
nhập khẩu java. util. ArrayList;
nhập khẩu java. util. List;
 
// Ví dụ: Giả sử giao diện này được cung cấp từ hệ điều hành của bạn để triển khai
giao diện Cập nhật thời gianGọi lại {
  vô hiệu Thời gian cập nhật( dài thời gian);
}
 
// đây là cách triển khai của bạn.
// ví dụ: Bạn muốn cập nhật thời gian trang web của mình mỗi giờ
lớp học Cập nhật thời gian trang web Gọi lại thực hiện Cập nhật thời gianGọi lại {
 
  @Ghi đè
  công cộng vô hiệu Thời gian cập nhật( dài thời gian) {
   // in thời gian cập nhật ở bất kỳ đâu trong ví dụ của trang web của bạn
   System.out.println(thời gian);
  }
}

Trong ví dụ của chúng tôi, bộ đếm thời gian hệ thống hỗ trợ các phương thức gọi lại:

Hiểu cơ chế callback trong Java (bản dịch)

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// Đây là SystemTimer được triển khai bởi Hệ điều hành (OS) của bạn
// Bạn không biết bộ đếm thời gian này được triển khai như thế nào. Ví dụ này chỉ
// cho bạn thấy nó trông như thế nào. Làm thế nào bạn có thể thực hiện một
// tự gọi lại nếu bạn muốn.
lớp học Hệ thống hẹn giờ {
 
  Danh sách các lệnh gọi lại = mới ArrayList();
 
  công cộng vô hiệu registerCallBackForUpdatesEveryHour(TimeUpdaterCallBack timerCallBack) {
   gọi lại.add(timerCallBack);
  }
 
  // ... SystemTimer này có thể có nhiều logic hơn ở đây mà chúng ta không biết ...
 
  // Tại một thời điểm nào đó trong quá trình triển khai SystemTimer này (bạn không biết)
  // phương thức này sẽ được gọi và mỗi timerCallBack được đăng ký
  // sẽ được gọi. Mỗi timerCallBack đã đăng ký có thể có một
  // triển khai khác nhau của phương thức updateTime() và my be
  // được sử dụng theo những cách khác nhau bởi nhiều khách hàng khác nhau.
  công cộng vô hiệu một giờ đã hết hạn() {
 
   (TimeUpdaterCallBack timerCallBack : các lệnh gọi lại) {
    timerCallBack.updateTime(System.currentTimeMillis());
   }
  }
}

Cuối cùng, đây là trình cập nhật thời gian của trang web trong ví dụ đơn giản giả của chúng tôi:

Hiểu cơ chế callback trong Java (bản dịch)

?
1
2
3
4
5
6
7
8
9
10
// Đây là máy khách của chúng tôi. Nó sẽ được sử dụng trong ví dụ WebSite của chúng tôi. Nó sẽ cập nhật
// thời gian của trang web mỗi giờ.
lớp học Trình cập nhật WebSiteTime {
 
  công cộng tĩnh vô hiệu main(String[] args) {
   Hệ thống hẹn giờ Hệ thống hẹn giờ = mới Bộ đếm thời gian hệ thống();
   TimeUpdaterCallBack webSiteCallBackUpdater = mới Cập nhật thời gian trang web (WebSiteTimeUpdater)
   SystemTimer.registerCallBackForUpdatesEveryHour(webSiteCallBackUpdater);
  }
}

Văn bản gốc: http://cleancodedevelopment-qualityseal.blogspot.com/2012/10/under Hiểu-callbacks-with-java.html.

Cuối cùng, bài viết tìm hiểu cơ chế gọi lại (bản dịch) trong Java kết thúc tại đây. Nếu bạn muốn biết thêm về cách hiểu cơ chế gọi lại (bản dịch) trong Java, vui lòng tìm kiếm các bài viết về CFSDN hoặc tiếp tục duyệt các bài viết liên quan. ủng hộ blog của tôi trong tương lai! .

33 4 0
qq735679552
Hồ sơ

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá taxi Didi miễn phí
Phiếu giảm giá taxi Didi
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress