Có một vấn đề OOP cổ điển về phương thức xâu chuỗi so với các phương thức "điểm truy cập đơn":
main.getA().getB().getC().transmogrify(x, y)
đấu với
main.getA().transmogrifyMyC(x, y)
Điều đầu tiên dường như có lợi thế là mỗi lớp chỉ chịu trách nhiệm cho một tập hợp hoạt động nhỏ hơn và làm cho mọi thứ trở nên mô đun hơn rất nhiều - việc thêm một phương thức vào C không đòi hỏi bất kỳ nỗ lực nào trong A, B hoặc C để phơi bày nó.
Nhược điểm, tất nhiên, là đóng gói yếu hơn , mà mã thứ hai giải quyết. Bây giờ A có quyền kiểm soát mọi phương thức đi qua nó và có thể ủy thác nó cho các trường của nó nếu nó muốn.
Tôi nhận ra không có giải pháp duy nhất và tất nhiên nó phụ thuộc vào ngữ cảnh, nhưng tôi thực sự muốn nghe một số thông tin về sự khác biệt quan trọng khác giữa hai phong cách, và trong trường hợp nào tôi nên chọn một trong hai - vì ngay bây giờ, khi tôi thử để thiết kế một số mã, tôi cảm thấy như mình không sử dụng các đối số để quyết định cách này hay cách khác.