Ứng dụng tôi đang làm việc trên các quy trình Mục công việc. Tùy thuộc vào trạng thái của một mục công việc có một số hành động có sẵn. "Hoàn thành" "Hủy" "định lại" vv ...Đề xuất mẫu thiết kế
Để cung cấp các chức năng cho những hành động Tôi hiện đang có một giao diện trông giống như thế này ...
public interface IActionProvider{
public void Complete(WorkItem workItem);
public void Cancel (WorkItem workItem);
public void Reassign(WorkItem workItem);
}
Sau đó, dựa trên các chi tiết khác của mục công việc tôi có triển khai cụ thể của giao diện. Chỉ cần ví dụ ...
public class NormalActionProvider :IActionProvider
{
...
}
và
public class UrgentActionProvider : IActionProvider
{
....
}
Vấn đề là, nếu tôi muốn thêm một hành động mới, nói ... "Đại biểu" Tôi phải cập nhật giao diện mà các khóa học có hiệu ứng trên tất cả các triển khai.
Điều này có vi phạm Nguyên tắc mở/đóng không? Bạn có thể giới thiệu một mẫu thiết kế hoặc trình cấu trúc lại có thể giúp tôi ở đây không?