[S.O.L.I.D] – Single responsibility principle

Single responsibility principle là gì? 

Phát biểu: Một class nên có một và chỉ một lý do để thay đổi

Là sao? nghe sao có hiểu quá vậy =))). Mình xét thử ví dụ dưới đây nha.

Mình có một class UserService, có hàm registerUser() trong này đơn giản là mình create một user sau đó gửi email confirm là xong. Nếu application của bạn chỉ làm như vậy thì đến đây nó vẫn là một good design. 

Sau đó một thời gian, ứng dụng của bạn mở rộng, lúc đó chẳng hạn như AdminService cũng cần gửi mail, ReportService cũng cần gửi mail… Thì các bạn sẽ phải làm sao ạ? Tất nhiên là mỗi class AdminService, ReportService.. bạn sẽ phải implement lại hàm gửi mail, và lúc này code của bạn sẽ bị dulicate code rất nhiều.

Chưa hết =)) khi bạn cần sữa logic gửi mail đi, thì bạn phải đi từng class AdminService, ReportService.. để sửa. Như vậy nó sẽ làm cho code của bạn rất khó mở rộng và bảo trì.

Bây giờ mình thử apply cái Single responsibility principle vào xem thử nó có giải quyết được gì không ha!!!

Bạn thấy thằng EmailService được tách ra để làm riêng một nhiệm vụ gửi mail. UserService chỉ cần sài những method mà EmailService cung cấp. Sau này những class khác AdminService có sài cũng chỉ cần gọi EmailService ra mà dùng thôi. Đên lúc có sửa logic gửi mail thì ta chỉ cần vào đúng class gửi EmailService để sửa mà không quan tâm những class khác, nó giúp cho mình dễ mở rộng và bảo trì code.

Kết luận: trong đa số trường hợp nếu apply thằng Single responsibility principle này sẽ giúp code dễ mở rộng và bảo trì hơn, trừ trường hợp ứng dụng bạn quá nhỏ thì tách ra chỉ thêm phiền phức thêm mà thôi.

Please follow and like us:
error

2 thoughts on “[S.O.L.I.D] – Single responsibility principle

Leave a Reply

Your email address will not be published. Required fields are marked *