2009-05-26 23 views
27

Hiện tại, chúng tôi phải xây dựng một ứng dụng dựa trên ứng dụng kế thừa. Mã cho ứng dụng cũ đó nên được vứt đi và viết lại, nhưng vì nó thường đi - thay vì viết lại nó, chúng ta cần căn cứ vào cái gì đó mới. Gần đây, chúng tôi quyết định đi đường dẫn DomainDrivenDesign. Vì vậy, chống tham nhũng lớp có thể là một giải pháp cho các vấn đề của chúng tôi. Theo tôi hiểu, theo cách này, có thể dần dần viết lại ứng dụng cũ.DDD, lớp Chống tham nhũng, cách thực hiện?

Nhưng - tôi không thể tìm thấy bất kỳ ví dụ hay nào. Tôi sẽ đánh giá cao thông tin ANY.

Trả lời

9

Thực hiện cụ thể của tôi, EmployeeAccessService được gọi bằng một Repository. Nó thực sự là một mặt tiền vào lớp chống tham nhũng. Nó ủy nhiệm cho EmployeeAccessAdapter. Bộ điều hợp tìm nạp một đối tượng từ mô hình kế thừa (mà nó lấy từ EmployeeAccessFacade), sau đó chuyển nó tới EmployeeAccessTranslator để chuyển đổi đối tượng từ mô hình kế thừa sang đối tượng miền trong mô hình của ứng dụng của tôi.

EmployeeAccessService

public Employee findEmployee(String empID){ 
    return adapter.findEmployee(empID); 
} 

EmployeeAccessAdapter

public Employee findEmployee(String empID){ 
    EmployeeAccessContainer container = facade.findEmployeeAccess(empID); 
    return translator.translate(container); 
} 

EmployeeAccessTranslator

public Employee translate(EmployeeAccessContainer container){ 
    Employee emp = null; 
    if (container != null) { 
     employee = new Employee(); 
     employee.setEmpID(idPrefix + container.getEmployeeDTO().getEmpID()); 
     ...(more complex mappings) 
+0

Điều này có vẻ tốt. Nhưng tôi vẫn chưa thấy bất kỳ mã nào. :) –

27

Từ cácDDD book (Domain-Driven Design: Tackling Complexity in the Heart of Software) bởi Eric Evans:

Giao diện công cộng của TẦNG chống tham nhũng thường xuất hiện như một tập hợp các dịch vụ, mặc dù thỉnh thoảng nó có thể mang hình thức của một ENTITY.

và một chút sau

Một cách để tổ chức thiết kế của lớp chống tham nhũng là như một sự kết hợp của mặt tiền, adapter (cả từ Gamma et al. 1995), và dịch , cùng với các cơ chế giao tiếp và vận chuyển thường cần thiết để nói chuyện giữa các hệ thống .

Vì vậy, bạn có thể tìm thấy các ví dụ bằng cách xem đề xuất adapter patternfacade pattern.

Tôi sẽ cố gắng diễn giải những gì Eric Evans đã nói, lớp chống tham nhũng của bạn sẽ xuất hiện dưới dạng dịch vụ ở bên ngoài lớp của bạn. Vì vậy, bên ngoài lớp chống tham nhũng, các lớp khác sẽ không biết chúng đang "nói" với lớp chống tham nhũng. Bên trong lớp bạn sẽ sử dụng bộ điều hợp và mặt tiền để bọc các nguồn thông tin kế thừa của mình.

Thông tin thêm về lớp chống tham nhũng:

+0

Cảm ơn. Tôi sẽ kiểm tra chúng ngay bây giờ. Nhưng tôi có cảm giác rằng nó sẽ không đủ. Không có bất kỳ ví dụ mã nào? :) –

+0

http://www.c-sharpcorner.com/UploadFile/rmcochran/csharp_wrapper402122006091959AM/csharp_wrapper4.aspx cái này thật tuyệt vời để hiểu mẫu Adapter :) –

+1

Liên kết Xây dựng lớp chống tham nhũng thường xuyên cần thiết (http: // joeydotnet.com/blog/archive/2007/09/10/building-the-often-needed-anti-corruption-layer.aspx) và DDD - Lớp chống tham nhũng (http://www.goeleven.com/blog/ entryDetail.aspx? entry = 168) bị hỏng –

Các vấn đề liên quan