Tôi có một lớp mà tôi muốn cho phép một số tùy chọn cấu hình (~ 20 +). Mỗi tùy chọn bật hoặc tắt một chức năng hoặc làm thay đổi hoạt động. Để tạo điều kiện này, tôi đã mã hóa một lớp tùy chọn riêng biệt với các giá trị mặc định. Tuy nhiên, tôi đã phải xả rác mã của tôi với điều kiện bảo vệ để xác định cách thức hoạt động của các phương thức. Tôi gần như đã xong, nhưng bây giờ mã có vẻ ngửi.Có một mẫu để thêm "tùy chọn" vào một lớp học không?
Có phương pháp/mẫu ưa thích nào để triển khai lớp như thế này không?
EDIT: Cụ thể hơn, tôi đang làm việc trên một lớp phân tích cú pháp. Mỗi tùy chọn cấu hình các phần loại trừ lẫn nhau của thuật toán phân tích cú pháp cơ bản. Ví dụ tôi có một số khu vực trong lớp học của tôi trông giống như dưới đây:
if (this.Option.UseIdAttribute)
attributeIDs = new Hashtable();
else
attributeIDs = null;
public Element GetElementById(string id)
{
if (string.IsNullOrEmpty (id))
throw new ArgumentNullException("id");
if (attributeIDs == null)
throw new Exception(ExceptionUseIdAttributeFalse);
return attributeIDs[id.ToLower()] as Element;
}
Nó rất khó để nói trừ khi bạn gửi mã ... – johnstok