là gì (nếu có) các giả định ngụ ý hoặc hạn chế và sự khác biệt về thiết kế như:Câu hỏi về mẫu cấu trúc lớp. Tôi nên chọn gì?
A) này:
class SampleClass1
{
IWorker workerA;
IWorker workerB;
void setWorkerA(IWorker w);
void setWorkerB(IWorker w);
WorkResult doWork();
}
B) so với này:
class SampleClass2
{
WorkResult doWork(IWorker workerA, IWorker workerB);
}
Tôi biết nó phụ thuộc vào dự án cụ thể nhưng nếu lớp trên là một phần của một khung nhỏ? Lớp đầu tiên có thể duy trì trạng thái và tách các bước tự nhiên hơn nhưng lớp thứ hai đảm bảo "giao tiếp thời gian thực" với người gọi bên ngoài tự nhiên hơn vì Công nhân được truyền mỗi khi doWork() được gọi.
Có bất kỳ đề nghị sử dụng hoặc thực hành chung nào hướng dẫn lựa chọn giữa hai cách trên không? Cảm ơn.
Tôi nghĩ trong ví dụ cơ bản này, chúng ta không thể gọi A là thiết kế tồi vì nó chỉ là đại diện của một cấu trúc lớp, không thực sự là lớp thực tế. Ngoài ra, doWork có thể ném một ngoại lệ nếu nó không có một thể hiện của cả hai lớp, có thể chấp nhận được. – scubabbl
Tôi hiểu câu hỏi là câu hỏi thiết kế. Và các lớp như A) là IMHO điển hình cho các lớp học tạo ra nhiều vấn đề khi được sử dụng trong các phần khác của mã. Chúng có thể trong suốt đối với nhà thiết kế của lớp gốc, nhưng là điểm thất bại điển hình khi được người khác sử dụng. – Thorsten79