Ioc là gì


*

Trước Lúc lấn sân vào rõ ràng thì các bạn bắt buộc nắm rõ một số điểm sau. IoC là kiến thiết principle, nó không đề xuất là 1 Pattern. IoC cứu vớt các bạn xây dựng công tác loosely copupled. làm cho lịch trình cũng vươn lên là dễ thử nghiệm, không ngừng mở rộng and duy trì.

Bạn đang xem: Ioc là gì

Bài Viết: Ioc là gì


*

Tuy thế để làm cho chương trình loosely, các bạn phải phối kết hợp cả IoC & DIPhường chđọng không chỉ có cần sử dụng từng IoC.

Các bạn hãy xem những bản vẽ xây dựng phổ biến nhỏng hình mặt dưới:


*

Trong phong cách xây dựng N-tier, ta sẽ tập trung vào BusinessLogic class và DataAccess class nhằm đọc về IoC. Ví dụ công tác đc thiết kễ như sau:

public class CustomerBusinessLogic DataAccess _dataAccess; public CustomerBusinessLogic() _dataAccess = new DataAccess(); public string GetCustomerName(int id) return _dataAccess.GetCustomerName(id); public class DataAccess public DataAccess() public string GetCustomerName(int id) return “Dummy Customer Name”; // get it from DB in real ứng dụng Về phương diện thiết kế, code như vậy tuồng như nthêm gọn, tuy nhiên lại thêm một vụ việc là class CustomerBusinessLogic bị gắn thêm chặt vào class DataAccess.


Giả sử nếu như công tác đề nghị kết nỗi với khá nhiều data source khác biệt để lấy biết tin User thì những các bạn sẽ đề nghị sửa chữa class DataAccess này.

Xem thêm: Top 3 View Engine Phổ Biến Trong Nod Ejs Là Gì, Phần Mềm Mở File

Hoặc đơn giản nhỏng Việc sửa đổi class name cũng trở thành mang đến Việc sửa đổi rất nhiều vị trí. Về căn uống phiên bản thì kia là một xây đắp ko cực tốt, khó mở rộng.

Để giải quyết và xử lý vấn đề bên trên chúng ta cần phối hợp IoC and DIP. Cảnh báo là IoC là bốn tưởng thiết kế thế cho nên chúng ta gồm rất nhiều phương pháp triển khai xúc tiến, bạn có thể không tính tiền design. Như mình nhằm cập ngơi nghỉ trên cao các bạn sẽ apply từng step để imporve sầu xây dựng trên:

Step 1: Create Simple Factory Class

public class DataAccessFactory public static DataAccess GetDataAccessObj() return new DataAccess(); Hiện tại bài toán get object Data access sẽ trải qua class DataAccessFactory

public class CustomerBusinessLogic public CustomerBusinessLogic() public string GetCustomerName(int id) DataAccess _dataAccess = DataAccessFactory.GetDataAccessObj(); return _dataAccess.GetCustomerName(id); Đó đó là tư tưởng áp dụng IoC, thay thế vày thẳng trực tiếp tạo ra object DataAccess các bạn áp dụng class DataAccessFactory để tạo nên object này. Dù thế để hoàn toản loosely couple thì chúng ta đề nghị phối hợp DIP. nữa.

Nhắc lại một chút ít DIP:

High-màn chơi modules should not depover on low-level modules. Both should depkết thúc on the abstraction. Abstractions should not depkết thúc on details. Details should depover on abstractions.


Nguyên lý tiên phong hàng đầu nghe hình như dễ hiểu, còn số 2 tương đối là tương đối khó đọc đúng không?

Abstraction là trừu tượng, một trang bị gì đó ko rõ nét. Với ví dụ sống bên trên cao thì class CustomerBusinessLogic là chiếc khôn cùng rõ rệt. Vậy nguyên tắc số 2 đề cùa tới bài toán áp dụng interface và Abstraction class

Ok! dùng DIPhường vào ví dụ bên trên. Các các bạn sẽ tạo ra một Interface nlỗi sau:

public interface ICustomerDataAccess string GetCustomerName(int id);Và sửa đổi class DataAccess & CustomerBusinessLogic class nhỏng sau:CustomerDataAccess

public class CustomerDataAccess: ICustomerDataAccess public CustomerDataAccess() public string GetCustomerName(int id) return “Dummy Customer Name”; CustomerBusinessLogic

public class CustomerBusinessLogic ICustomerDataAccess _custDataAccess; public CustomerBusinessLogic() _custDataAccess = DataAccessFactory.GetCustomerDataAccessObj(); public string GetCustomerName(int id) return _custDataAccess.GetCustomerName(id); Giải bày: Twitter FB LinkedIn Please enable JavaScript to view the comments powered by Disqus. Khang • 2021 • https://github.com/realchampionshipwrestling.com

Thể Loại: Share Kiến Thức Cộng Đồng
Bài Viết: Ioc Là Gì – Dependency Injection Và Inversion Of Control

Thể Loại: LÀ GÌ

Nguồn Blog là gì: https://realchampionshipwrestling.com Ioc Là Gì – Dependency Injection Và Inversion Of Control

| W88Vuive | xosoketqua.com | jun88