Martin Fowler trình diễn rõ ràng:
Phân lớp là một trong những kỹ thuật phổ biến nhất mà các nhà thiết kế phần mềm sử dụng để phá vỡ một hệ thống phần mềm phức tạp. Bạn thấy nó trong các kiến trúc máy, trong đó các lớp xuất phát từ ngôn ngữ lập trình với các cuộc gọi hệ điều hành vào trình điều khiển thiết bị và bộ hướng dẫn CPU, và vào các cổng logic bên trong chip. Mạng có lớp FTP nằm trên đầu TCP, nằm trên đỉnh IP, nằm trên đỉnh ethernet.
Khi nghĩ về một hệ thống theo các lớp, bạn tưởng tượng các hệ thống con chính trong phần mềm được sắp xếp theo một dạng bánh lớp nào đó, trong đó mỗi lớp nằm trên một lớp thấp hơn. Trong sơ đồ này, lớp cao hơn sử dụng các dịch vụ khác nhau được xác định bởi lớp thấp hơn, nhưng lớp thấp hơn không biết về lớp cao hơn. Hơn nữa, mỗi lớp thường che giấu các lớp thấp hơn của nó khỏi các lớp ở trên, vì vậy lớp 4 sử dụng các dịch vụ của lớp 3, sử dụng các dịch vụ của lớp 2, nhưng lớp 4 không biết đến lớp 2. (Không phải tất cả các kiến trúc phân lớp đều mờ như thế này , nhưng hầu hết là người hay nói đúng hơn là hầu hết mờ đục.)
Chia hệ thống thành các lớp có một số lợi ích quan trọng.
• Bạn có thể hiểu một lớp duy nhất là một tổng thể mạch lạc mà không biết nhiều về các lớp khác. Bạn có thể hiểu cách xây dựng dịch vụ FTP trên TCP mà không cần biết chi tiết về cách thức hoạt động của ethernet.
• Bạn có thể thay thế các lớp bằng các triển khai thay thế của cùng các dịch vụ cơ bản. Dịch vụ FTP có thể chạy mà không thay đổi qua ethernet, PPP hoặc bất kỳ công ty cáp nào sử dụng.
• Bạn giảm thiểu sự phụ thuộc giữa các lớp. Nếu công ty cáp thay đổi hệ thống truyền vật lý của mình, miễn là họ làm cho IP hoạt động, chúng tôi không phải thay đổi dịch vụ FTP của mình.
• Các lớp tạo ra những nơi tốt để tiêu chuẩn hóa. TCP và IP là các tiêu chuẩn vì chúng xác định cách các lớp của chúng sẽ hoạt động.
• Khi bạn đã tạo một lớp, bạn có thể sử dụng nó cho nhiều dịch vụ cấp cao hơn. Do đó, TCP / IP được sử dụng bởi FTP, telnet, SSH và HTTP. Mặt khác, tất cả các giao thức cấp cao hơn này sẽ phải viết các giao thức cấp thấp hơn của riêng chúng. Từ thư viện của Kyle Geoffrey Passarelli
Layering là một kỹ thuật quan trọng, nhưng có những nhược điểm.
• Các lớp gói gọn một số, nhưng không phải tất cả, mọi thứ đều tốt. Kết quả là đôi khi bạn nhận được thay đổi tầng. Ví dụ kinh điển về điều này trong một ứng dụng doanh nghiệp được xếp lớp là thêm một trường cần hiển thị trên UI, phải có trong cơ sở dữ liệu và do đó phải được thêm vào mỗi lớp ở giữa.
• Các lớp bổ sung có thể gây hại cho hiệu suất. Ở mỗi lớp, mọi thứ thường cần phải được chuyển đổi từ đại diện này sang đại diện khác. Tuy nhiên, việc đóng gói một hàm cơ bản thường mang lại cho bạn hiệu quả đạt được nhiều hơn mức bù. Một lớp kiểm soát các giao dịch có thể được tối ưu hóa và sau đó sẽ làm mọi thứ nhanh hơn. Nhưng phần khó nhất của kiến trúc lớp là quyết định lớp nào sẽ có và trách nhiệm của mỗi lớp là gì.