Nếu logic hoạt động trên giao diện thành viên, thay vì thực hiện triển khai thành viên, sau đó viết phương pháp trợ giúp [hoặc phương pháp khuyến nông].
public IRandom
{
byte NextByte();
}
public static class IRandomExtensions
{
// logic that acts against public interface IRandom
// may be applied to all implementations
public static int GetNextUnbiasedInteger (this IRandom random) { }
public static IEnumerable<T> Shuffle<T> (
this IRandom random,
IEnumerable<T> items) { }
}
Nếu logic kinh doanh hoạt động chống lại thực hiện thành viên,
public class SomeCommand : ICommand
{
// an implementation-specific member, NOT a member
// of ICommand
public int SomeControlCount { get; set; }
}
// a method that references implementation-speciic
// details. where should this go?
public void DoSomething()
{
SomeCommand command;
int count = command.SomeControlCount;
}
thì rất có thể chúng ta nên chặt chẽ hơn liên kết này để các lớp thực hiện. Nếu đây là một sự xuất hiện đủ phổ biến, thì một lớp cơ sở có thể có ý nghĩa.
Cá nhân, các hệ thống phân cấp phức tạp gặp nhiều rắc rối hơn chúng đáng giá, sử dụng phán đoán của riêng bạn về khả năng bảo trì, mức độ dễ đọc và sử dụng lại, và bạn nên ổn!
Hy vọng điều này sẽ hữu ích! :)
Nguồn
2010-06-17 19:39:29
Hoặc vòng khác: làm cho lớp trợ giúp một trình trang trí và đưa lớp lệnh vào lớp trợ giúp. – Ozan
+1 Khi suy nghĩ về việc sử dụng lại mã, đừng nghĩ "thừa kế", hãy suy nghĩ "tập hợp". –