Asked Jun 19th, 2023 3:54 a.m. 345 0 3
  • 345 0 3
+3

Thắc mắc về kiến thức Dependency injection giảm sự phụ thuộc giữa 2 tầng

Share
  • 345 0 3

Theo như mình biết thì Dependency injection làm giảm sự phụ thuộc giữa 2 tầng mà nó phụ thuộc vào lớp Interface nhưng mình đang thắc là ví dụ khi 1 hàm trong tầng phụ thuộc thêm 1 biến thì ở tầng inject nó cũng phải thêm 1 biến nếu biến đó không khai báo default. Vậy mọi người cho mình hỏi giảm phụ thuộc ở đây cụ thể là gì ạ?

3 ANSWERS


Answered Jun 22nd, 2023 4:52 a.m.
+3
  • Theo như mình tìm hiểu thì khi một class sử dụng đối tượng của lớp khác thì nó đã phụ thuộc vào đối tượng đó. Việc sử dụng DI khiến cho lớp được inject chỉ phụ thuộc vào tầng interface và tầng dependency cũng chỉ phụ thuộc vào tầng interface đó chính là giảm phụ thuộc
  • Còn với câu hỏi trên là khi mình thay đổi 1 biến trong hàm của tầng dependency thì tầng được inject cũng phải thay đổi đó không phải là công dụng của DI vì khi thay đổi param thì đồng nghĩa với mình đã tạo 1 hàm mới => Bác nào có ý kiến khác hay ý gì thì cùng trao đổi nhé ♥
Share
Jul 6th, 2023 6:17 a.m.

Câu trả lời này theo mình là đầy đủ rồi. Mình bổ sung thêm là nếu không muốn thêm biến thì nên gom các biến đó thành một dạng Object (kiểu RequestObject ). Sau này khi muốn thêm param thì mình sẽ bổ sung thêm thuộc tính cho Object đó là xong.

0
| Reply
Share
Avatar cột thớ @CsharpisMyLifee
Jul 7th, 2023 10:03 a.m.

Cảm ơn góp ý của bạn ❤️

0
| Reply
Share
Answered Jul 2nd, 2023 6:44 a.m.
+2

Theo OOP Dependency injection không liên quan gì tới giảm phụ thuộc cả nó là 1 hành động bạn gán 1 đối tượng vào vào 1 thuộc tính của một đối tượng khác có thể thông qua setter hoặc constructor

Ví dụ Java cho dễ hình dung:

interface Book { void buy(String name, String userId); }

class HistoryBook implement Book { public void buy(String name) { // Do some thing } }

class UserService { private Book book;

public void buyBook(String bookName, String userId) { book.buy(bookName, userId); }

public UserService(Book book) { this.book = book; }

}

  • Việc khởi tạo đối tượng UserService có 1 tham số là đối tượng Book gọi là: Dependency Injection by Constructor
  • Class UserService không phụ thuộc vào HistoryBook mà phụ thuộc vào Interface Book gọi là : Dependency Inversion
Share
Answered Jun 20th, 2023 4:20 a.m.
-1

thằng class A thay vì khai báo là tao cần biến X là 1 instance từ class B để chạy

thì nó chỉ cần khai báo là tao cần class SomeThing có property ... có method ... gì

Share
Avatar cột thớ @CsharpisMyLifee
Jun 21st, 2023 2:14 a.m.

Cái này là kiến thức cơ bản của DI r bác mình cần cụ thể hơn phụ thuộc như thế nào cơ

0
| Reply
Share
Jun 22nd, 2023 5:18 a.m.
0
| Reply
Share
Viblo
Let's register a Viblo Account to get more interesting posts.