{"id":3579,"date":"2026-03-27T19:03:23","date_gmt":"2026-03-27T11:03:23","guid":{"rendered":"https:\/\/www.go2posts.com\/vi\/implementing-solid-principles-maintainable-code\/"},"modified":"2026-03-27T19:03:23","modified_gmt":"2026-03-27T11:03:23","slug":"implementing-solid-principles-maintainable-code","status":"publish","type":"post","link":"https:\/\/www.go2posts.com\/vi\/implementing-solid-principles-maintainable-code\/","title":{"rendered":"H\u01b0\u1edbng d\u1eabn OOAD: Tri\u1ec3n khai c\u00e1c Nguy\u00ean t\u1eafc SOLID \u0111\u1ec3 vi\u1ebft m\u00e3 ngu\u1ed3n d\u1ec5 b\u1ea3o tr\u00ec"},"content":{"rendered":"<p>C\u00e1c h\u1ec7 th\u1ed1ng ph\u1ea7n m\u1ec1m lu\u00f4n thay \u0111\u1ed5i. Y\u00eau c\u1ea7u thay \u0111\u1ed5i, t\u00ednh n\u0103ng m\u1edf r\u1ed9ng v\u00e0 c\u00e1c b\u00e1o l\u1ed7i t\u00edch t\u1ee5 d\u1ea7n. Trong b\u1ed1i c\u1ea3nh n\u00e0y, ch\u1ea5t l\u01b0\u1ee3ng c\u1ea5u tr\u00fac m\u00e3 ngu\u1ed3n n\u1ec1n t\u1ea3ng s\u1ebd quy\u1ebft \u0111\u1ecbnh li\u1ec7u m\u1ed9t d\u1ef1 \u00e1n c\u00f3 ph\u00e1t tri\u1ec3n hay b\u1ecb \u0111\u00ecnh tr\u1ec7. Ph\u00e2n t\u00edch v\u00e0 Thi\u1ebft k\u1ebf H\u01b0\u1edbng \u0111\u1ed1i t\u01b0\u1ee3ng (OOAD) cung c\u1ea5p khung n\u1ec1n t\u1ea3ng \u0111\u1ec3 x\u00e2y d\u1ef1ng c\u00e1c h\u1ec7 th\u1ed1ng v\u1eefng ch\u1eafc, nh\u01b0ng vi\u1ec7c \u00e1p d\u1ee5ng \u0111\u00fang c\u00e1c kh\u00e1i ni\u1ec7m n\u00e0y \u0111\u00f2i h\u1ecfi s\u1ef1 k\u1ef7 lu\u1eadt. \u0110\u00e2y ch\u00ednh l\u00e0 l\u00fac c\u00e1c nguy\u00ean t\u1eafc SOLID ph\u00e1t huy t\u00e1c d\u1ee5ng. N\u0103m quy t\u1eafc thi\u1ebft k\u1ebf n\u00e0y \u0111\u00f3ng vai tr\u00f2 nh\u01b0 m\u1ed9t h\u01b0\u1edbng d\u1eabn \u0111\u1ec3 vi\u1ebft m\u00e3 ngu\u1ed3n d\u1ec5 hi\u1ec3u, linh ho\u1ea1t v\u00e0 d\u1ec5 b\u1ea3o tr\u00ec theo th\u1eddi gian. \ud83e\udde9<\/p>\n<p>Nhi\u1ec1u nh\u00e0 ph\u00e1t tri\u1ec3n hi\u1ec3u \u0111\u01b0\u1ee3c c\u01a1 b\u1ea3n v\u1ec1 l\u1edbp v\u00e0 \u0111\u1ed1i t\u01b0\u1ee3ng nh\u01b0ng l\u1ea1i g\u1eb7p kh\u00f3 kh\u0103n v\u1edbi c\u00e1c quy\u1ebft \u0111\u1ecbnh ki\u1ebfn tr\u00fac d\u1eabn \u0111\u1ebfn ph\u1ea7n m\u1ec1m d\u1ec5 g\u00e3y v\u1ee1. M\u1ee5c ti\u00eau \u1edf \u0111\u00e2y kh\u00f4ng ph\u1ea3i l\u00e0 vi\u1ebft m\u00e3 ngu\u1ed3n tr\u00f4ng ho\u00e0n h\u1ea3o ngay t\u1eeb ng\u00e0y \u0111\u1ea7u ti\u00ean, m\u00e0 l\u00e0 x\u00e2y d\u1ef1ng m\u1ed9t n\u1ec1n t\u1ea3ng c\u00f3 th\u1ec3 v\u01b0\u1ee3t qua th\u1eed th\u00e1ch c\u1ee7a th\u1eddi gian. Ch\u00fang ta s\u1ebd \u0111i s\u00e2u v\u00e0o t\u1eebng nguy\u00ean t\u1eafc, ph\u00e2n t\u00edch l\u00fd thuy\u1ebft, \u1ee9ng d\u1ee5ng th\u1ef1c t\u1ebf v\u00e0 t\u00e1c \u0111\u1ed9ng \u0111\u1ebfn v\u00f2ng \u0111\u1eddi ph\u00e1t tri\u1ec3n ph\u1ea7n m\u1ec1m. \u0110\u1ebfn cu\u1ed1i h\u01b0\u1edbng d\u1eabn n\u00e0y, b\u1ea1n s\u1ebd c\u00f3 m\u1ed9t l\u1ed9 tr\u00ecnh r\u00f5 r\u00e0ng \u0111\u1ec3 t\u00e1i c\u1ea5u tr\u00fac c\u00e1c c\u01a1 s\u1edf m\u00e3 ngu\u1ed3n hi\u1ec7n c\u00f3 ho\u1eb7c thi\u1ebft k\u1ebf c\u00e1c h\u1ec7 th\u1ed1ng m\u1edbi v\u1edbi tr\u1ecdng t\u00e2m l\u00e0 t\u00ednh \u1ed5n \u0111\u1ecbnh. \ud83d\ude80<\/p>\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter\"><img alt=\"Hand-drawn whiteboard infographic illustrating the five SOLID principles for maintainable code: Single Responsibility (blue), Open\/Closed (green), Liskov Substitution (red), Interface Segregation (purple), and Dependency Inversion (orange), with colored marker visuals, icons, and key benefits for software architecture best practices\" decoding=\"async\" src=\"https:\/\/www.go2posts.com\/wp-content\/uploads\/2026\/03\/solid-principles-whiteboard-infographic.jpg\"\/><\/figure>\n<\/div>\n<h2>\ud83d\udcda C\u00e1c nguy\u00ean t\u1eafc SOLID l\u00e0 g\u00ec?<\/h2>\n<p>SOLID l\u00e0 m\u1ed9t c\u1ee5m t\u1eeb vi\u1ebft t\u1eaft \u0111\u1ea1i di\u1ec7n cho n\u0103m nguy\u00ean t\u1eafc thi\u1ebft k\u1ebf nh\u1eb1m gi\u00fap c\u00e1c thi\u1ebft k\u1ebf ph\u1ea7n m\u1ec1m tr\u1edf n\u00ean d\u1ec5 hi\u1ec3u, linh ho\u1ea1t v\u00e0 d\u1ec5 b\u1ea3o tr\u00ec h\u01a1n. Nguy\u00ean t\u1eafc n\u00e0y \u0111\u01b0\u1ee3c Robert C. Martin gi\u1edbi thi\u1ec7u, m\u1eb7c d\u00f9 c\u00e1c kh\u00e1i ni\u1ec7m c\u1ed1t l\u00f5i c\u00f3 ngu\u1ed3n g\u1ed1c t\u1eeb c\u00e1c t\u00e0i li\u1ec7u h\u01b0\u1edbng \u0111\u1ed1i t\u01b0\u1ee3ng tr\u01b0\u1edbc \u0111\u00f3. Nh\u1eefng nguy\u00ean t\u1eafc n\u00e0y kh\u00f4ng ph\u1ea3i l\u00e0 lu\u1eadt c\u1ee9ng nh\u1eafc m\u00e0 l\u00e0 c\u00e1c h\u01b0\u1edbng d\u1eabn gi\u00fap nh\u00e0 ph\u00e1t tri\u1ec3n v\u01b0\u1ee3t qua c\u00e1c quy\u1ebft \u0111\u1ecbnh thi\u1ebft k\u1ebf ph\u1ee9c t\u1ea1p. Khi \u0111\u01b0\u1ee3c \u00e1p d\u1ee5ng \u0111\u00fang c\u00e1ch, ch\u00fang gi\u00fap gi\u1ea3m s\u1ef1 ph\u1ee5 thu\u1ed9c gi\u1eefa c\u00e1c th\u00e0nh ph\u1ea7n v\u00e0 t\u0103ng t\u00ednh g\u1eafn k\u1ebft b\u00ean trong h\u1ec7 th\u1ed1ng.<\/p>\n<p>H\u00e3y ngh\u0129 \u0111\u1ebfn SOLID nh\u01b0 m\u1ed9t danh s\u00e1ch ki\u1ec3m tra s\u1ee9c kh\u1ecfe ki\u1ebfn tr\u00fac. N\u1ebfu m\u1ed9t module vi ph\u1ea1m nh\u1eefng quy t\u1eafc n\u00e0y, n\u00f3 th\u01b0\u1eddng tr\u1edf th\u00e0nh ngu\u1ed3n g\u1ed1c c\u1ee7a n\u1ee3 k\u1ef9 thu\u1eadt. C\u00e1c nguy\u00ean t\u1eafc n\u00e0y gi\u1ea3i quy\u1ebft nh\u1eefng sai l\u1ea7m ph\u1ed5 bi\u1ebfn nh\u01b0:<\/p>\n<ul>\n<li>C\u00e1c l\u1edbp th\u1ef1c hi\u1ec7n qu\u00e1 nhi\u1ec1u c\u00f4ng vi\u1ec7c<\/li>\n<li>M\u00e3 ngu\u1ed3n b\u1ecb h\u1ecfng khi th\u00eam t\u00ednh n\u0103ng m\u1edbi<\/li>\n<li>C\u00e1c ph\u1ee5 thu\u1ed9c qu\u00e1 g\u1eafn k\u1ebft v\u1edbi c\u00e1c tri\u1ec3n khai c\u1ee5 th\u1ec3<\/li>\n<li>C\u00e1c giao di\u1ec7n bu\u1ed9c kh\u00e1ch h\u00e0ng ph\u1ea3i ph\u1ee5 thu\u1ed9c v\u00e0o c\u00e1c ph\u01b0\u01a1ng th\u1ee9c h\u1ecd kh\u00f4ng c\u1ea7n<\/li>\n<\/ul>\n<p>Vi\u1ec7c \u00e1p d\u1ee5ng c\u00e1c th\u1ef1c h\u00e0nh n\u00e0y \u0111\u00f2i h\u1ecfi s\u1ef1 thay \u0111\u1ed5i t\u01b0 duy. \u0110\u00f3 l\u00e0 vi\u1ec7c suy ngh\u0129 v\u1ec1 m\u1ed1i quan h\u1ec7 gi\u1eefa c\u00e1c th\u00e0nh ph\u1ea7n thay v\u00ec ch\u1ec9 t\u1eadp trung v\u00e0o h\u00e0nh vi ri\u00eang l\u1ebb. D\u01b0\u1edbi \u0111\u00e2y l\u00e0 ph\u1ea7n ph\u00e2n t\u00edch \u00fd ngh\u0129a c\u1ee7a t\u1eebng ch\u1eef c\u00e1i:<\/p>\n<ul>\n<li><strong>S<\/strong>: Nguy\u00ean t\u1eafc tr\u00e1ch nhi\u1ec7m \u0111\u01a1n nh\u1ea5t<\/li>\n<li><strong>O<\/strong>: Nguy\u00ean t\u1eafc M\u1edf\/\u0110\u00f3ng<\/li>\n<li><strong>L<\/strong>: Nguy\u00ean t\u1eafc Thay th\u1ebf Liskov<\/li>\n<li><strong>I<\/strong>: Nguy\u00ean t\u1eafc T\u00e1ch giao di\u1ec7n<\/li>\n<li><strong>D<\/strong>: Nguy\u00ean t\u1eafc \u0110\u1ea3o ng\u01b0\u1ee3c ph\u1ee5 thu\u1ed9c<\/li>\n<\/ul>\n<h2>\ud83c\udfaf S: Nguy\u00ean t\u1eafc tr\u00e1ch nhi\u1ec7m \u0111\u01a1n nh\u1ea5t<\/h2>\n<p>Nguy\u00ean t\u1eafc tr\u00e1ch nhi\u1ec7m \u0111\u01a1n nh\u1ea5t (SRP) n\u00eau r\u1eb1ng m\u1ed9t l\u1edbp ch\u1ec9 n\u00ean c\u00f3 m\u1ed9t, v\u00e0 ch\u1ec9 m\u1ed9t, l\u00fd do \u0111\u1ec3 thay \u0111\u1ed5i. \u0110i\u1ec1u n\u00e0y kh\u00f4ng c\u00f3 ngh\u0129a l\u00e0 m\u1ed9t l\u1edbp ch\u1ec9 n\u00ean c\u00f3 m\u1ed9t ph\u01b0\u01a1ng th\u1ee9c. N\u00f3 c\u00f3 ngh\u0129a l\u00e0 m\u1ed9t l\u1edbp n\u00ean bao \u0111\u00f3ng m\u1ed9t ch\u1ee9c n\u0103ng ho\u1eb7c m\u1ed1i quan t\u00e2m duy nh\u1ea5t. Khi m\u1ed9t l\u1edbp \u0111\u1ea3m nh\u1eadn nhi\u1ec1u tr\u00e1ch nhi\u1ec7m, n\u00f3 s\u1ebd tr\u1edf n\u00ean mong manh. M\u1ed9t thay \u0111\u1ed5i \u1edf m\u1ed9t khu v\u1ef1c logic kinh doanh c\u00f3 th\u1ec3 v\u00f4 t\u00ecnh l\u00e0m h\u1ecfng khu v\u1ef1c kh\u00e1c v\u00ec ch\u00fang chia s\u1ebb c\u00f9ng m\u1ed9t c\u1ea5u tr\u00fac m\u00e3 ngu\u1ed3n. \ud83e\uddf1<\/p>\n<h3>T\u1ea1i sao SRP l\u1ea1i quan tr\u1ecdng<\/h3>\n<p>H\u00e3y xem x\u00e9t m\u1ed9t l\u1edbp ch\u1ecbu tr\u00e1ch nhi\u1ec7m x\u1eed l\u00fd \u0111\u01a1n h\u00e0ng. N\u1ebfu l\u1edbp n\u00e0y \u0111\u1ed3ng th\u1eddi x\u1eed l\u00fd vi\u1ec7c l\u01b0u d\u1eef li\u1ec7u v\u00e0o c\u01a1 s\u1edf d\u1eef li\u1ec7u v\u00e0 g\u1eedi th\u00f4ng b\u00e1o email, th\u00ec n\u00f3 vi ph\u1ea1m SRP. T\u1ea1i sao? V\u00ec l\u00fd do thay \u0111\u1ed5i l\u00e0 kh\u00e1c nhau. B\u1ea1n c\u00f3 th\u1ec3 thay \u0111\u1ed5i \u0111\u1ecbnh d\u1ea1ng email m\u00e0 kh\u00f4ng c\u1ea7n ch\u1ea1m v\u00e0o logic c\u01a1 s\u1edf d\u1eef li\u1ec7u. N\u1ebfu ch\u00fang b\u1ecb g\u00e1n ch\u1eb7t v\u1edbi nhau, b\u1ea1n c\u00f3 nguy c\u01a1 l\u00e0m h\u1ecfng kh\u1ea3 n\u0103ng l\u01b0u tr\u1eef d\u1eef li\u1ec7u khi c\u1eadp nh\u1eadt h\u1ec7 th\u1ed1ng th\u00f4ng b\u00e1o.<\/p>\n<p>L\u1ee3i \u00edch khi tu\u00e2n th\u1ee7 SRP bao g\u1ed3m:<\/p>\n<ul>\n<li><strong>Gi\u1ea3m \u0111\u1ed9 ph\u1ee9c t\u1ea1p<\/strong>: C\u00e1c l\u1edbp nh\u1ecf h\u01a1n d\u1ec5 \u0111\u1ecdc v\u00e0 hi\u1ec3u h\u01a1n.<\/li>\n<li><strong>D\u1ec5 ki\u1ec3m th\u1eed h\u01a1n<\/strong>: B\u1ea1n c\u00f3 th\u1ec3 ki\u1ec3m th\u1eed c\u00e1c h\u00e0nh vi c\u1ee5 th\u1ec3 m\u1ed9t c\u00e1ch \u0111\u1ed9c l\u1eadp m\u00e0 kh\u00f4ng c\u1ea7n gi\u1ea3 l\u1eadp c\u00e1c ch\u1ee9c n\u0103ng kh\u00f4ng li\u00ean quan.<\/li>\n<li><strong>Li\u00ean k\u1ebft th\u1ea5p h\u01a1n<\/strong>: Nh\u1eefng thay \u0111\u1ed5i trong m\u1ed9t module s\u1ebd kh\u00f4ng lan truy\u1ec1n sang c\u00e1c module kh\u00f4ng li\u00ean quan.<\/li>\n<\/ul>\n<h3>T\u00e1i c\u1ea5u tr\u00fac theo nguy\u00ean t\u1eafc SRP<\/h3>\n<p>\u0110\u1ec3 t\u00e1i c\u1ea5u tr\u00fac m\u1ed9t l\u1edbp vi ph\u1ea1m SRP, h\u00e3y x\u00e1c \u0111\u1ecbnh c\u00e1c tr\u00e1ch nhi\u1ec7m ri\u00eang bi\u1ec7t. Tr\u00edch xu\u1ea5t t\u1eebng tr\u00e1ch nhi\u1ec7m v\u00e0o m\u1ed9t l\u1edbp ri\u00eang bi\u1ec7t. V\u00ed d\u1ee5, t\u00e1ch logic t\u00ednh thu\u1ebf kh\u1ecfi logic l\u01b0u tr\u1eef \u0111\u01a1n h\u00e0ng. S\u1ef1 t\u00e1ch bi\u1ec7t n\u00e0y cho ph\u00e9p b\u1ea1n thay \u0111\u1ed5i thu\u1eadt to\u00e1n t\u00ednh thu\u1ebf m\u00e0 kh\u00f4ng c\u1ea7n lo l\u1eafng v\u1ec1 l\u1edbp c\u01a1 s\u1edf d\u1eef li\u1ec7u. N\u00f3 c\u0169ng cho ph\u00e9p b\u1ea1n thay \u0111\u1ed5i c\u01a1 ch\u1ebf l\u01b0u tr\u1eef (v\u00ed d\u1ee5: t\u1eeb h\u1ec7 th\u1ed1ng t\u1ec7p sang l\u01b0u tr\u1eef \u0111\u00e1m m\u00e2y) m\u00e0 kh\u00f4ng l\u00e0m thay \u0111\u1ed5i logic kinh doanh c\u1ed1t l\u00f5i. \ud83d\udd27<\/p>\n<h2>\ud83d\udd13 O: Nguy\u00ean t\u1eafc M\u1edf\/\u0110\u00f3ng<\/h2>\n<p>Nguy\u00ean t\u1eafc M\u1edf\/\u0110\u00f3ng (OCP) n\u00eau r\u1eb1ng c\u00e1c th\u1ef1c th\u1ec3 ph\u1ea7n m\u1ec1m n\u00ean \u0111\u01b0\u1ee3c m\u1edf r\u1ed9ng nh\u01b0ng \u0111\u00f3ng \u0111\u1ed1i v\u1edbi thay \u0111\u1ed5i. Nghe c\u00f3 v\u1ebb m\u00e2u thu\u1eabn ban \u0111\u1ea7u. L\u00e0m sao m\u1ed9t th\u1ee9 c\u00f3 th\u1ec3 v\u1eeba m\u1edf v\u1eeba \u0111\u00f3ng? \u00dd ngh\u0129a l\u00e0 b\u1ea1n n\u00ean c\u00f3 th\u1ec3 th\u00eam ch\u1ee9c n\u0103ng m\u1edbi m\u00e0 kh\u00f4ng c\u1ea7n thay \u0111\u1ed5i m\u00e3 ngu\u1ed3n hi\u1ec7n c\u00f3. B\u1ea1n \u0111\u1ea1t \u0111\u01b0\u1ee3c \u0111i\u1ec1u n\u00e0y th\u00f4ng qua tr\u1eebu t\u01b0\u1ee3ng h\u00f3a v\u00e0 \u0111a h\u00ecnh. \ud83e\uddec<\/p>\n<h3>Chi ph\u00ed c\u1ee7a vi\u1ec7c thay \u0111\u1ed5i<\/h3>\n<p>Khi b\u1ea1n thay \u0111\u1ed5i m\u00e3 ngu\u1ed3n hi\u1ec7n c\u00f3 \u0111\u1ec3 th\u00eam t\u00ednh n\u0103ng, b\u1ea1n s\u1ebd t\u1ea1o ra r\u1ee7i ro g\u00e2y ra l\u1ed7i h\u1ed3i quy. B\u1ea1n \u0111ang thao t\u00e1c v\u00e0o m\u00e3 ngu\u1ed3n \u0111\u00e3 \u0111\u01b0\u1ee3c ki\u1ec3m th\u1eed v\u00e0 tin c\u1eady. M\u1ed7i d\u00f2ng b\u1ea1n thay \u0111\u1ed5i \u0111\u1ec1u c\u00f3 th\u1ec3 l\u00e0 ngu\u1ed3n g\u1ed1c ti\u1ec1m t\u00e0ng c\u1ee7a l\u1ed7i m\u1edbi. OCP khuy\u1ebfn kh\u00edch b\u1ea1n vi\u1ebft m\u00e3 ngu\u1ed3n sao cho c\u00e1c h\u00e0nh vi m\u1edbi \u0111\u01b0\u1ee3c th\u00eam v\u00e0o b\u1eb1ng c\u00e1ch t\u1ea1o ra c\u00e1c l\u1edbp ho\u1eb7c module m\u1edbi, tri\u1ec3n khai c\u00e1c giao di\u1ec7n hi\u1ec7n c\u00f3 ho\u1eb7c k\u1ebf th\u1eeba t\u1eeb c\u00e1c l\u1edbp c\u01a1 s\u1edf hi\u1ec7n c\u00f3.<\/p>\n<h3>Tri\u1ec3n khai OCP<\/h3>\n<p>S\u1eed d\u1ee5ng l\u1edbp tr\u1eebu t\u01b0\u1ee3ng ho\u1eb7c giao di\u1ec7n \u0111\u1ec3 \u0111\u1ecbnh ngh\u0129a h\u1ee3p \u0111\u1ed3ng. Sau \u0111\u00f3, t\u1ea1o c\u00e1c tri\u1ec3n khai c\u1ee5 th\u1ec3 cho c\u00e1c t\u00ecnh hu\u1ed1ng c\u1ee5 th\u1ec3. N\u1ebfu b\u1ea1n c\u1ea7n h\u1ed7 tr\u1ee3 ph\u01b0\u01a1ng th\u1ee9c thanh to\u00e1n m\u1edbi, \u0111\u1eebng th\u00eam m\u1ed9t l\u1ec7nh <code>if<\/code>v\u00e0o b\u1ed9 x\u1eed l\u00fd thanh to\u00e1n hi\u1ec7n c\u00f3. Thay v\u00e0o \u0111\u00f3, h\u00e3y t\u1ea1o m\u1ed9t l\u1edbp b\u1ed9 x\u1eed l\u00fd thanh to\u00e1n m\u1edbi tri\u1ec3n khai giao di\u1ec7n thanh to\u00e1n. M\u00e3 ngu\u1ed3n h\u1ec7 th\u1ed1ng ch\u00ednh t\u01b0\u01a1ng t\u00e1c v\u1edbi giao di\u1ec7n, v\u1eabn kh\u00f4ng bi\u1ebft chi ti\u1ebft tri\u1ec3n khai c\u1ee5 th\u1ec3. \u0110i\u1ec1u n\u00e0y gi\u00fap logic c\u1ed1t l\u00f5i \u0111\u01b0\u1ee3c \u0111\u00f3ng \u0111\u1ed1i v\u1edbi thay \u0111\u1ed5i.<\/p>\n<p>C\u00e1c chi\u1ebfn l\u01b0\u1ee3c ch\u00ednh \u0111\u1ec3 th\u1ef1c hi\u1ec7n OCP:<\/p>\n<ul>\n<li>S\u1eed d\u1ee5ng \u0111a h\u00ecnh \u0111\u1ec3 tr\u00ec ho\u00e3n h\u00e0nh vi sang c\u00e1c l\u1edbp con.<\/li>\n<li>Ti\u00eam ph\u1ee5 thu\u1ed9c thay v\u00ec kh\u1edfi t\u1ea1o ch\u00fang tr\u1ef1c ti\u1ebfp.<\/li>\n<li>S\u1eed d\u1ee5ng c\u00e1c m\u1eabu thi\u1ebft k\u1ebf nh\u01b0 Chi\u1ebfn l\u01b0\u1ee3c ho\u1eb7c Nh\u00e0 m\u00e1y \u0111\u1ec3 qu\u1ea3n l\u00fd s\u1ef1 thay \u0111\u1ed5i trong h\u00e0nh vi.<\/li>\n<\/ul>\n<h2>\ud83d\udd04 L: Nguy\u00ean t\u1eafc Thay th\u1ebf Liskov<\/h2>\n<p>Nguy\u00ean t\u1eafc Thay th\u1ebf Liskov (LSP) th\u01b0\u1eddng \u0111\u01b0\u1ee3c xem l\u00e0 tr\u1eebu t\u01b0\u1ee3ng nh\u1ea5t trong nh\u00f3m. N\u00f3 n\u00eau r\u1eb1ng c\u00e1c \u0111\u1ed1i t\u01b0\u1ee3ng c\u1ee7a l\u1edbp cha n\u00ean c\u00f3 th\u1ec3 thay th\u1ebf b\u1eb1ng c\u00e1c \u0111\u1ed1i t\u01b0\u1ee3ng c\u1ee7a l\u1edbp con m\u00e0 kh\u00f4ng l\u00e0m h\u1ecfng \u1ee9ng d\u1ee5ng. N\u00f3i \u0111\u01a1n gi\u1ea3n h\u01a1n, n\u1ebfu m\u1ed9t ch\u01b0\u01a1ng tr\u00ecnh s\u1eed d\u1ee5ng m\u1ed9t l\u1edbp c\u01a1 s\u1edf, th\u00ec n\u00f3 n\u00ean c\u00f3 th\u1ec3 s\u1eed d\u1ee5ng b\u1ea5t k\u1ef3 l\u1edbp con n\u00e0o c\u1ee7a l\u1edbp c\u01a1 s\u1edf \u0111\u00f3 m\u00e0 kh\u00f4ng c\u1ea7n bi\u1ebft s\u1ef1 kh\u00e1c bi\u1ec7t. \u0110i\u1ec1u n\u00e0y \u0111\u1ea3m b\u1ea3o r\u1eb1ng vi\u1ec7c k\u1ebf th\u1eeba \u0111\u01b0\u1ee3c s\u1eed d\u1ee5ng \u0111\u00fang c\u00e1ch v\u00e0 kh\u00f4ng vi ph\u1ea1m k\u1ef3 v\u1ecdng. \u2696\ufe0f<\/p>\n<h3>Vi ph\u1ea1m LSP<\/h3>\n<p>M\u1ed9t vi ph\u1ea1m ph\u1ed5 bi\u1ebfn x\u1ea3y ra khi l\u1edbp con ghi \u0111\u00e8 m\u1ed9t ph\u01b0\u01a1ng th\u1ee9c v\u00e0 thay \u0111\u1ed5i \u0111i\u1ec1u ki\u1ec7n ti\u1ec1n v\u00e0 h\u1eadu. V\u00ed d\u1ee5, n\u1ebfu l\u1edbp cha c\u00f3 m\u1ed9t ph\u01b0\u01a1ng th\u1ee9c \u0111\u1ea3m b\u1ea3o gi\u00e1 tr\u1ecb tr\u1ea3 v\u1ec1 kh\u00f4ng bao gi\u1edd l\u00e0 null, th\u00ec l\u1edbp con kh\u00f4ng n\u00ean tr\u1ea3 v\u1ec1 null. N\u1ebfu l\u1edbp con l\u00e0m v\u1eady, b\u1ea5t k\u1ef3 m\u00e3 n\u00e0o ph\u1ee5 thu\u1ed9c v\u00e0o h\u1ee3p \u0111\u1ed3ng l\u1edbp cha s\u1ebd b\u1ecb s\u1eadp khi nh\u1eadn \u0111\u1ed1i t\u01b0\u1ee3ng l\u1edbp con. \u0110i\u1ec1u n\u00e0y ph\u00e1 v\u1ee1 ni\u1ec1m tin \u0111\u01b0\u1ee3c thi\u1ebft l\u1eadp b\u1edfi h\u1ec7 th\u1ed1ng ki\u1ec3u.<\/p>\n<h3>\u0110\u1ea3m b\u1ea3o t\u00ednh thay th\u1ebf \u0111\u01b0\u1ee3c<\/h3>\n<p>\u0110\u1ec3 duy tr\u00ec LSP, c\u00e1c l\u1edbp con ph\u1ea3i tu\u00e2n th\u1ee7 h\u1ee3p \u0111\u1ed3ng c\u1ee7a l\u1edbp cha. \u0110i\u1ec1u n\u00e0y bao g\u1ed3m:<\/p>\n<ul>\n<li>Duy tr\u00ec c\u00e1c b\u1ea5t bi\u1ebfn \u0111\u01b0\u1ee3c \u0111\u1ecbnh ngh\u0129a trong l\u1edbp cha.<\/li>\n<li>Kh\u00f4ng n\u00e9m c\u00e1c ngo\u1ea1i l\u1ec7 m\u1edbi m\u00e0 kh\u00f4ng \u0111\u01b0\u1ee3c khai b\u00e1o trong l\u1edbp cha.<\/li>\n<li>\u0110\u1ea3m b\u1ea3o c\u00e1c hi\u1ec7u \u1ee9ng ph\u1ee5 nh\u1ea5t qu\u00e1n v\u1edbi h\u00e0nh vi c\u1ee7a l\u1edbp cha.<\/li>\n<\/ul>\n<p>N\u1ebfu m\u1ed9t l\u1edbp con kh\u00f4ng th\u1ec3 th\u1ef1c hi\u1ec7n \u0111\u01b0\u1ee3c h\u1ee3p \u0111\u1ed3ng c\u1ee7a l\u1edbp cha, th\u00ec n\u00f3 kh\u00f4ng n\u00ean k\u1ebf th\u1eeba t\u1eeb l\u1edbp cha \u0111\u00f3. Thay v\u00e0o \u0111\u00f3, n\u00f3 c\u00f3 th\u1ec3 chia s\u1ebb m\u1ed9t l\u1edbp c\u01a1 s\u1edf chung ho\u1eb7c d\u1ef1a v\u00e0o k\u1ebft h\u1ee3p. K\u1ebft h\u1ee3p th\u01b0\u1eddng l\u00e0 l\u1ef1a ch\u1ecdn an to\u00e0n h\u01a1n so v\u1edbi k\u1ebf th\u1eeba khi m\u1ed1i quan h\u1ec7 &#8216;l\u00e0-m\u1ed9t&#8217; y\u1ebfu ho\u1eb7c g\u00e2y v\u1ea5n \u0111\u1ec1. \ud83d\udee1\ufe0f<\/p>\n<h2>\ud83d\udd0c I: Nguy\u00ean t\u1eafc T\u00e1ch bi\u1ec7t Giao di\u1ec7n<\/h2>\n<p>Nguy\u00ean t\u1eafc T\u00e1ch bi\u1ec7t Giao di\u1ec7n (ISP) n\u00eau r\u1eb1ng kh\u00f4ng c\u00f3 kh\u00e1ch h\u00e0ng n\u00e0o n\u00ean b\u1ecb bu\u1ed9c ph\u1ea3i ph\u1ee5 thu\u1ed9c v\u00e0o c\u00e1c ph\u01b0\u01a1ng th\u1ee9c m\u00e0 ch\u00fang kh\u00f4ng s\u1eed d\u1ee5ng. Thay v\u00ec m\u1ed9t giao di\u1ec7n l\u1edbn, \u0111\u01a1n nh\u1ea5t, t\u1ed1t h\u01a1n l\u00e0 c\u00f3 nhi\u1ec1u giao di\u1ec7n nh\u1ecf, c\u1ee5 th\u1ec3 h\u01a1n. \u0110i\u1ec1u n\u00e0y ng\u0103n c\u1ea3n c\u00e1c l\u1edbp tri\u1ec3n khai c\u00e1c ph\u01b0\u01a1ng th\u1ee9c m\u00e0 ch\u00fang kh\u00f4ng c\u1ea7n. Khi m\u1ed9t l\u1edbp tri\u1ec3n khai m\u1ed9t giao di\u1ec7n, n\u00f3 \u0111ang h\u1ee9a s\u1ebd h\u1ed7 tr\u1ee3 t\u1ea5t c\u1ea3 c\u00e1c ph\u01b0\u01a1ng th\u1ee9c trong giao di\u1ec7n \u0111\u00f3. ISP \u0111\u1ea3m b\u1ea3o l\u1eddi h\u1ee9a n\u00e0y c\u00f3 \u00fd ngh\u0129a v\u00e0 kh\u00f4ng g\u00e2y g\u00e1nh n\u1eb7ng. \ud83e\udde9<\/p>\n<h3>V\u1ea5n \u0111\u1ec1 v\u1edbi c\u00e1c giao di\u1ec7n d\u00e0y<\/h3>\n<p>H\u00e3y t\u01b0\u1edfng t\u01b0\u1ee3ng m\u1ed9t <code>Ng\u01b0\u1eddi lao \u0111\u1ed9ng<\/code> giao di\u1ec7n v\u1edbi c\u00e1c ph\u01b0\u01a1ng th\u1ee9c cho <code>work()<\/code>, <code>\u0103n()<\/code>, v\u00e0 <code>ng\u1ee7()<\/code>. N\u1ebfu b\u1ea1n t\u1ea1o m\u1ed9t <code>Robot<\/code> l\u1edbp th\u1ef1c hi\u1ec7n <code>Ng\u01b0\u1eddi lao \u0111\u1ed9ng<\/code>, n\u00f3 ph\u1ea3i th\u1ef1c hi\u1ec7n <code>\u0103n()<\/code> v\u00e0 <code>ng\u1ee7()<\/code>. \u0110i\u1ec1u n\u00e0y kh\u00f4ng h\u1ee3p l\u00fd \u0111\u1ed1i v\u1edbi m\u1ed9t robot. N\u1ebfu b\u1ea1n bu\u1ed9c robot ph\u1ea3i th\u1ef1c hi\u1ec7n c\u00e1c ph\u01b0\u01a1ng th\u1ee9c n\u00e0y, b\u1ea1n s\u1ebd t\u1ea1o ra c\u00e1c tri\u1ec3n khai tr\u1ed1ng r\u1ed7ng ho\u1eb7c gi\u1ea3 t\u1ea1o l\u00e0m b\u1eeba b\u1ed9n m\u00e3 ngu\u1ed3n. \u0110\u00e2y l\u00e0 vi ph\u1ea1m nguy\u00ean t\u1eafc ISP.<\/p>\n<h3>Thi\u1ebft k\u1ebf c\u00e1c giao di\u1ec7n c\u1ee5 th\u1ec3 cho kh\u00e1ch h\u00e0ng<\/h3>\n<p>\u0110\u1ec3 kh\u1eafc ph\u1ee5c \u0111i\u1ec1u n\u00e0y, chia nh\u1ecf giao di\u1ec7n <code>Ng\u01b0\u1eddi lao \u0111\u1ed9ng<\/code> th\u00e0nh c\u00e1c giao di\u1ec7n nh\u1ecf h\u01a1n. T\u1ea1o m\u1ed9t giao di\u1ec7n <code>C\u00f3 th\u1ec3 l\u00e0m vi\u1ec7c<\/code> cho ph\u01b0\u01a1ng th\u1ee9c l\u00e0m vi\u1ec7c v\u00e0 m\u1ed9t giao di\u1ec7n <code>C\u00f3 th\u1ec3 \u0103n<\/code> cho ph\u01b0\u01a1ng th\u1ee9c \u0103n. Robot ch\u1ec9 th\u1ef1c hi\u1ec7n <code>C\u00f3 th\u1ec3 l\u00e0m vi\u1ec7c<\/code>, trong khi nh\u00e2n vi\u00ean con ng\u01b0\u1eddi c\u00f3 th\u1ec3 th\u1ef1c hi\u1ec7n c\u1ea3 hai. \u0110i\u1ec1u n\u00e0y gi\u00fap c\u00e1c h\u1ee3p \u0111\u1ed3ng \u0111\u01b0\u1ee3c s\u1ea1ch s\u1ebd v\u00e0 ph\u00f9 h\u1ee3p v\u1edbi ng\u01b0\u1eddi th\u1ef1c hi\u1ec7n. Kh\u00e1ch h\u00e0ng ch\u1ec9 ph\u1ee5 thu\u1ed9c v\u00e0o nh\u1eefng g\u00ec h\u1ecd th\u1ef1c s\u1ef1 s\u1eed d\u1ee5ng.<\/p>\n<p>L\u1ee3i \u00edch c\u1ee7a ISP:<\/p>\n<ul>\n<li><strong>M\u00e3 ngu\u1ed3n s\u1ea1ch s\u1ebd<\/strong>: C\u00e1c giao di\u1ec7n t\u1eadp trung v\u00e0 d\u1ec5 d\u00e0ng t\u00e0i li\u1ec7u h\u00f3a.<\/li>\n<li><strong>T\u00ednh linh ho\u1ea1t<\/strong>: C\u00e1c l\u1edbp ch\u1ec9 c\u00f3 th\u1ec3 tri\u1ec3n khai nh\u1eefng h\u00e0nh vi m\u00e0 ch\u00fang c\u1ea7n.<\/li>\n<li><strong>Gi\u1ea3m thi\u1ec3u ph\u1ee5 thu\u1ed9c<\/strong>: Nh\u1eefng thay \u0111\u1ed5i \u0111\u1ed1i v\u1edbi m\u1ed9t giao di\u1ec7n s\u1ebd kh\u00f4ng \u1ea3nh h\u01b0\u1edfng \u0111\u1ebfn kh\u00e1ch h\u00e0ng c\u1ee7a giao di\u1ec7n kh\u00e1c.<\/li>\n<\/ul>\n<h2>\ud83d\udd17 D: Nguy\u00ean t\u1eafc \u0111\u1ea3o ng\u01b0\u1ee3c ph\u1ee5 thu\u1ed9c<\/h2>\n<p>Nguy\u00ean t\u1eafc \u0111\u1ea3o ng\u01b0\u1ee3c ph\u1ee5 thu\u1ed9c (DIP) n\u00eau r\u1eb1ng c\u00e1c m\u00f4-\u0111un c\u1ea5p cao kh\u00f4ng n\u00ean ph\u1ee5 thu\u1ed9c v\u00e0o c\u00e1c m\u00f4-\u0111un c\u1ea5p th\u1ea5p. C\u1ea3 hai \u0111\u1ec1u n\u00ean ph\u1ee5 thu\u1ed9c v\u00e0o tr\u1eebu t\u01b0\u1ee3ng. H\u01a1n n\u1eefa, c\u00e1c tr\u1eebu t\u01b0\u1ee3ng kh\u00f4ng n\u00ean ph\u1ee5 thu\u1ed9c v\u00e0o chi ti\u1ebft; chi ti\u1ebft ph\u1ea3i ph\u1ee5 thu\u1ed9c v\u00e0o tr\u1eebu t\u01b0\u1ee3ng. \u0110i\u1ec1u n\u00e0y t\u00e1ch bi\u1ec7t h\u1ec7 th\u1ed1ng, cho ph\u00e9p logic kinh doanh c\u1ea5p cao duy tr\u00ec \u1ed5n \u0111\u1ecbnh b\u1ea5t k\u1ec3 nh\u1eefng thay \u0111\u1ed5i trong chi ti\u1ebft tri\u1ec3n khai c\u1ea5p th\u1ea5p nh\u01b0 truy c\u1eadp c\u01a1 s\u1edf d\u1eef li\u1ec7u hay g\u1ecdi API b\u00ean ngo\u00e0i. \ud83c\udfd7\ufe0f<\/p>\n<h3>Ph\u00e1 v\u1ee1 th\u1ee9 b\u1eadc<\/h3>\n<p>Truy\u1ec1n th\u1ed1ng, c\u00e1c m\u00f4-\u0111un c\u1ea5p cao (logic kinh doanh) g\u1ecdi c\u00e1c m\u00f4-\u0111un c\u1ea5p th\u1ea5p (l\u1edbp ti\u1ec7n \u00edch, tr\u00ecnh \u0111i\u1ec1u khi\u1ec3n c\u01a1 s\u1edf d\u1eef li\u1ec7u). \u0110i\u1ec1u n\u00e0y t\u1ea1o ra m\u1ed9t ph\u1ee5 thu\u1ed9c c\u1ee9ng. N\u1ebfu b\u1ea1n chuy\u1ec3n t\u1eeb c\u01a1 s\u1edf d\u1eef li\u1ec7u SQL sang c\u01a1 s\u1edf d\u1eef li\u1ec7u NoSQL, m\u00f4-\u0111un c\u1ea5p cao ph\u1ea3i thay \u0111\u1ed5i. DIP \u0111\u1ea3o ng\u01b0\u1ee3c m\u1ed1i quan h\u1ec7 n\u00e0y. M\u00f4-\u0111un c\u1ea5p cao ph\u1ee5 thu\u1ed9c v\u00e0o m\u1ed9t giao di\u1ec7n (tr\u1eebu t\u01b0\u1ee3ng). M\u00f4-\u0111un c\u1ea5p th\u1ea5p tri\u1ec3n khai giao di\u1ec7n \u0111\u00f3. M\u00f4-\u0111un c\u1ea5p cao ch\u01b0a bao gi\u1edd bi\u1ebft \u0111\u01b0\u1ee3c tri\u1ec3n khai c\u1ee5 th\u1ec3 n\u00e0o \u0111ang \u0111\u01b0\u1ee3c s\u1eed d\u1ee5ng.<\/p>\n<h3>\u1ee8ng d\u1ee5ng th\u1ef1c ti\u1ec5n<\/h3>\n<p>\u0110\u1ec3 \u00e1p d\u1ee5ng DIP, h\u00e3y \u0111\u1ecbnh ngh\u0129a m\u1ed9t giao di\u1ec7n \u0111\u1ea1i di\u1ec7n cho d\u1ecbch v\u1ee5 m\u00e0 m\u00f4-\u0111un c\u1ea5p cao c\u1ea7n. V\u00ed d\u1ee5, m\u1ed9t <code>StorageService<\/code> giao di\u1ec7n. M\u00f4-\u0111un c\u1ea5p cao ch\u00e8n m\u1ed9t tri\u1ec3n khai c\u1ee7a <code>StorageService<\/code> th\u00f4ng qua h\u00e0m t\u1ea1o ho\u1eb7c ph\u01b0\u01a1ng th\u1ee9c thi\u1ebft l\u1eadp. Tri\u1ec3n khai th\u1ef1c t\u1ebf (v\u00ed d\u1ee5, <code>FileStorage<\/code> ho\u1eb7c <code>CloudStorage<\/code>) \u0111\u01b0\u1ee3c k\u1ebft n\u1ed1i t\u1ea1i bi\u00ean gi\u1edbi \u1ee9ng d\u1ee5ng. \u0110i\u1ec1u n\u00e0y khi\u1ebfn h\u1ec7 th\u1ed1ng c\u00f3 th\u1ec3 ki\u1ec3m th\u1eed \u0111\u01b0\u1ee3c v\u00ec b\u1ea1n c\u00f3 th\u1ec3 ch\u00e8n m\u1ed9t tri\u1ec3n khai gi\u1ea3 trong qu\u00e1 tr\u00ecnh ki\u1ec3m th\u1eed \u0111\u01a1n v\u1ecb. N\u00f3 c\u0169ng khi\u1ebfn h\u1ec7 th\u1ed1ng linh ho\u1ea1t v\u1edbi nh\u1eefng thay \u0111\u1ed5i h\u1ea1 t\u1ea7ng m\u00e0 kh\u00f4ng c\u1ea7n vi\u1ebft l\u1ea1i logic kinh doanh. \ud83d\udd0c<\/p>\n<h2>\ud83d\udcca So s\u00e1nh c\u1ea5u tr\u00fac SOLID v\u1edbi c\u1ea5u tr\u00fac kh\u00f4ng theo SOLID<\/h2>\n<p>Hi\u1ec3u \u0111\u01b0\u1ee3c s\u1ef1 kh\u00e1c bi\u1ec7t gi\u1eefa m\u00e3 ngu\u1ed3n tu\u00e2n theo c\u00e1c nguy\u00ean t\u1eafc SOLID v\u00e0 m\u00e3 ngu\u1ed3n kh\u00f4ng tu\u00e2n theo s\u1ebd l\u00e0m r\u00f5 gi\u00e1 tr\u1ecb c\u1ee7a ch\u00fang. B\u1ea3ng sau \u0111\u00e2y n\u00eau b\u1eadt nh\u1eefng kh\u00e1c bi\u1ec7t ch\u00ednh v\u1ec1 c\u1ea5u tr\u00fac v\u00e0 kh\u1ea3 n\u0103ng b\u1ea3o tr\u00ec.<\/p>\n<table>\n<thead>\n<tr>\n<th>Kh\u00eda c\u1ea1nh<\/th>\n<th>C\u1ea5u tr\u00fac kh\u00f4ng theo SOLID<\/th>\n<th>C\u1ea5u tr\u00fac theo SOLID<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><strong>Kh\u1ea3 n\u0103ng thay \u0111\u1ed5i<\/strong><\/td>\n<td>Y\u00eau c\u1ea7u thay \u0111\u1ed5i m\u00e3 ngu\u1ed3n hi\u1ec7n c\u00f3 \u0111\u1ec3 th\u00eam t\u00ednh n\u0103ng.<\/td>\n<td>Th\u00eam c\u00e1c l\u1edbp m\u1edbi m\u00e0 kh\u00f4ng c\u1ea7n ch\u1ea1m v\u00e0o m\u00e3 ngu\u1ed3n hi\u1ec7n c\u00f3.<\/td>\n<\/tr>\n<tr>\n<td><strong>T\u00ednh li\u00ean k\u1ebft<\/strong><\/td>\n<td>Li\u00ean k\u1ebft cao gi\u1eefa c\u00e1c l\u1edbp v\u00e0 c\u00e1c tri\u1ec3n khai.<\/td>\n<td>Li\u00ean k\u1ebft th\u1ea5p nh\u1edd v\u00e0o tr\u1eebu t\u01b0\u1ee3ng v\u00e0 giao di\u1ec7n.<\/td>\n<\/tr>\n<tr>\n<td><strong>Ki\u1ec3m th\u1eed<\/strong><\/td>\n<td>Kh\u00f3 t\u00e1ch bi\u1ec7t c\u00e1c th\u00e0nh ph\u1ea7n \u0111\u1ec3 ki\u1ec3m th\u1eed.<\/td>\n<td>C\u00e1c th\u00e0nh ph\u1ea7n \u0111\u01b0\u1ee3c t\u00e1ch bi\u1ec7t v\u00e0 d\u1ec5 d\u00e0ng m\u00f4 ph\u1ecfng.<\/td>\n<\/tr>\n<tr>\n<td><strong>\u0110\u1ed9 ph\u1ee9c t\u1ea1p<\/strong><\/td>\n<td>C\u00e1c l\u1edbp th\u01b0\u1eddng ch\u1ee9a nhi\u1ec1u tr\u00e1ch nhi\u1ec7m.<\/td>\n<td>C\u00e1c l\u1edbp t\u1eadp trung v\u00e0 c\u00f3 m\u1ed9t tr\u00e1ch nhi\u1ec7m duy nh\u1ea5t.<\/td>\n<\/tr>\n<tr>\n<td><strong>Kh\u1ea3 n\u0103ng m\u1edf r\u1ed9ng<\/strong><\/td>\n<td>Kh\u00f3 m\u1edf r\u1ed9ng h\u01a1n khi logic tr\u1edf n\u00ean r\u1ed1i r\u1eafm.<\/td>\n<td>D\u1ec5 m\u1edf r\u1ed9ng b\u1eb1ng c\u00e1ch th\u00eam c\u00e1c m\u00f4-\u0111un m\u1edbi.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h2>\ud83d\udee0\ufe0f C\u00e1c chi\u1ebfn l\u01b0\u1ee3c t\u00e1i c\u1ea5u tr\u00fac th\u1ef1c t\u1ebf<\/h2>\n<p>T\u00e1i c\u1ea5u tr\u00fac m\u1ed9t c\u01a1 s\u1edf m\u00e3 hi\u1ec7n c\u00f3 \u0111\u1ec3 tu\u00e2n theo c\u00e1c nguy\u00ean t\u1eafc SOLID c\u00f3 th\u1ec3 g\u00e2y \u00e1p l\u1ef1c. R\u1ea5t hi\u1ebfm khi c\u00f3 th\u1ec3 vi\u1ebft l\u1ea1i to\u00e0n b\u1ed9 c\u00f9ng m\u1ed9t l\u00fac. M\u1ed9t c\u00e1ch ti\u1ebfp c\u1eadn t\u1eebng b\u01b0\u1edbc th\u01b0\u1eddng hi\u1ec7u qu\u1ea3 h\u01a1n. D\u01b0\u1edbi \u0111\u00e2y l\u00e0 m\u1ed9t chi\u1ebfn l\u01b0\u1ee3c \u0111\u1ec3 gi\u1edbi thi\u1ec7u c\u00e1c nguy\u00ean t\u1eafc n\u00e0y t\u1eebng ph\u1ea7n:<\/p>\n<ul>\n<li><strong>B\u1eaft \u0111\u1ea7u v\u1edbi SRP<\/strong>: X\u00e1c \u0111\u1ecbnh c\u00e1c l\u1edbp qu\u00e1 l\u1edbn ho\u1eb7c c\u00f3 nhi\u1ec1u l\u00fd do ph\u1ea3i thay \u0111\u1ed5i. Tr\u00edch xu\u1ea5t c\u00e1c ph\u01b0\u01a1ng th\u1ee9c ho\u1eb7c l\u1edbp \u0111\u1ec3 t\u00e1ch bi\u1ec7t c\u00e1c tr\u00e1ch nhi\u1ec7m.<\/li>\n<li><strong>Gi\u1edbi thi\u1ec7u giao di\u1ec7n<\/strong>: \u1ede b\u1ea5t k\u1ef3 \u0111\u00e2u b\u1ea1n th\u1ea5y c\u00e1c ph\u1ee5 thu\u1ed9c c\u1ee5 th\u1ec3, h\u00e3y t\u00ecm c\u01a1 h\u1ed9i gi\u1edbi thi\u1ec7u giao di\u1ec7n. \u0110i\u1ec1u n\u00e0y t\u1ea1o n\u1ec1n t\u1ea3ng cho DIP v\u00e0 OCP.<\/li>\n<li><strong>Ch\u00e8n ph\u1ee5 thu\u1ed9c<\/strong>: Di chuy\u1ec3n vi\u1ec7c t\u1ea1o \u0111\u1ed1i t\u01b0\u1ee3ng ra kh\u1ecfi logic l\u1edbp. S\u1eed d\u1ee5ng h\u00e0m t\u1ea1o ho\u1eb7c c\u00e1c b\u1ed9 ch\u1ee9a ch\u00e8n ph\u1ee5 thu\u1ed9c \u0111\u1ec3 cung c\u1ea5p c\u00e1c ph\u1ee5 thu\u1ed9c.<\/li>\n<li><strong>Xem x\u00e9t c\u00e1c l\u1edbp con<\/strong>: Ki\u1ec3m tra c\u1ea5u tr\u00fac k\u1ebf th\u1eeba c\u1ee7a b\u1ea1n. \u0110\u1ea3m b\u1ea3o c\u00e1c l\u1edbp con th\u1ef1c s\u1ef1 tu\u00e2n th\u1ee7 h\u1ee3p \u0111\u1ed3ng c\u1ee7a cha ch\u00fang (LSP).<\/li>\n<li><strong>Chia nh\u1ecf giao di\u1ec7n<\/strong>: N\u1ebfu m\u1ed9t l\u1edbp tri\u1ec3n khai m\u1ed9t giao di\u1ec7n c\u00f3 nhi\u1ec1u ph\u01b0\u01a1ng th\u1ee9c kh\u00f4ng s\u1eed d\u1ee5ng, h\u00e3y c\u00e2n nh\u1eafc chia nh\u1ecf giao di\u1ec7n th\u00e0nh c\u00e1c ph\u1ea7n nh\u1ecf h\u01a1n (ISP).<\/li>\n<\/ul>\n<p>H\u00e3y nh\u1edb r\u1eb1ng t\u00e1i c\u1ea5u tr\u00fac kh\u00f4ng ph\u1ea3i l\u00e0 v\u1ec1 s\u1ef1 ho\u00e0n h\u1ea3o. \u0110\u00f3 l\u00e0 v\u1ec1 vi\u1ec7c c\u1ea3i thi\u1ec7n m\u00e3 ngu\u1ed3n t\u1eebng b\u01b0\u1edbc. B\u1ea1n c\u00f3 th\u1ec3 t\u00e1i c\u1ea5u tr\u00fac t\u1eebng m\u00f4-\u0111un m\u1ed9t khi \u0111ang th\u00eam c\u00e1c t\u00ednh n\u0103ng m\u1edbi. \u0110i\u1ec1u n\u00e0y \u0111\u01b0\u1ee3c g\u1ecdi l\u00e0 Quy t\u1eafc Ng\u01b0\u1eddi th\u00e1m hi\u1ec3m: \u0111\u1ec3 l\u1ea1i m\u00e3 ngu\u1ed3n s\u1ea1ch h\u01a1n so v\u1edbi l\u00fac b\u1ea1n t\u00ecm th\u1ea5y n\u00f3. \ud83d\udd0d<\/p>\n<h2>\u26a0\ufe0f Nh\u1eefng sai l\u1ea7m ph\u1ed5 bi\u1ebfn c\u1ea7n tr\u00e1nh<\/h2>\n<p>M\u1eb7c d\u00f9 c\u00e1c nguy\u00ean t\u1eafc SOLID r\u1ea5t m\u1ea1nh m\u1ebd, nh\u01b0ng \u00e1p d\u1ee5ng sai c\u00f3 th\u1ec3 d\u1eabn \u0111\u1ebfn vi\u1ec7c thi\u1ebft k\u1ebf qu\u00e1 m\u1ee9c. \u0110i\u1ec1u quan tr\u1ecdng l\u00e0 ph\u1ea3i hi\u1ec3u b\u1ed1i c\u1ea3nh m\u00e0 c\u00e1c nguy\u00ean t\u1eafc n\u00e0y \u0111\u01b0\u1ee3c \u00e1p d\u1ee5ng.<\/p>\n<h3>Qu\u00e1 m\u1ee9c tr\u1eebu t\u01b0\u1ee3ng h\u00f3a<\/h3>\n<p>Vi\u1ec7c t\u1ea1o giao di\u1ec7n cho m\u1ed7i l\u1edbp l\u00e0 kh\u00f4ng c\u1ea7n thi\u1ebft. N\u1ebfu m\u1ed9t l\u1edbp \u0111\u01a1n gi\u1ea3n v\u00e0 kh\u00f3 thay \u0111\u1ed5i, vi\u1ec7c th\u00eam giao di\u1ec7n ch\u1ec9 \u0111\u1ec3 th\u1ecfa m\u00e3n m\u1ed9t nguy\u00ean t\u1eafc s\u1ebd t\u1ea1o ra \u0111\u1ed9 ph\u1ee9c t\u1ea1p kh\u00f4ng c\u1ea7n thi\u1ebft. H\u00e3y d\u00f9ng l\u00fd tr\u00ed. Ch\u1ec9 tr\u1eebu t\u01b0\u1ee3ng h\u00f3a khi th\u1ef1c s\u1ef1 c\u1ea7n s\u1ef1 thay \u0111\u1ed5i ho\u1eb7c nhi\u1ec1u tri\u1ec3n khai kh\u00e1c nhau. \ud83e\uddd0<\/p>\n<h3>L\u1ea1m d\u1ee5ng k\u1ebf th\u1eeba<\/h3>\n<p>K\u1ebf th\u1eeba l\u00e0 m\u1ed9t c\u00f4ng c\u1ee5 m\u1ea1nh m\u1ebd, nh\u01b0ng kh\u00f4ng n\u00ean d\u00f9ng ch\u1ec9 \u0111\u1ec3 t\u00e1i s\u1eed d\u1ee5ng m\u00e3. N\u1ebfu b\u1ea1n th\u1ea5y m\u00ecnh \u0111ang k\u1ebf th\u1eeba ch\u1ec9 \u0111\u1ec3 l\u1ea5y m\u1ed9t ph\u01b0\u01a1ng th\u1ee9c, h\u00e3y c\u00e2n nh\u1eafc d\u00f9ng k\u1ebft h\u1ee3p thay v\u00ec k\u1ebf th\u1eeba. C\u00e1c c\u1ea5u tr\u00fac k\u1ebf th\u1eeba s\u00e2u c\u00f3 th\u1ec3 khi\u1ebfn vi\u1ec7c hi\u1ec3u lu\u1ed3ng d\u1eef li\u1ec7u v\u00e0 logic tr\u1edf n\u00ean kh\u00f3 kh\u0103n. H\u00e3y gi\u1eef c\u00e1c c\u1ea5u tr\u00fac k\u1ebf th\u1eeba \u1edf m\u1ee9c n\u00f4ng v\u00e0 c\u00f3 \u00fd ngh\u0129a.<\/p>\n<h3>B\u1ecf qua b\u1ed1i c\u1ea3nh kinh doanh<\/h3>\n<p>Kh\u00f4ng ph\u1ea3i d\u1ef1 \u00e1n n\u00e0o c\u0169ng c\u1ea7n tu\u00e2n th\u1ee7 nghi\u00eam ng\u1eb7t c\u1ea3 n\u0103m nguy\u00ean t\u1eafc. \u0110\u1ed1i v\u1edbi m\u1ed9t b\u1ea3n m\u1eabu nhanh hay m\u1ed9t \u0111o\u1ea1n m\u00e3 ch\u1ec9 d\u00f9ng m\u1ed9t l\u1ea7n, chi ph\u00ed v\u1eadn h\u00e0nh c\u1ee7a SOLID c\u00f3 th\u1ec3 v\u01b0\u1ee3t qu\u00e1 l\u1ee3i \u00edch. H\u00e3y \u0111\u00e1nh gi\u00e1 v\u00f2ng \u0111\u1eddi v\u00e0 y\u00eau c\u1ea7u \u1ed5n \u0111\u1ecbnh c\u1ee7a d\u1ef1 \u00e1n tr\u01b0\u1edbc khi \u0111\u1ea7u t\u01b0 th\u1eddi gian v\u00e0o vi\u1ec7c t\u00e1i c\u1ea5u tr\u00fac quy m\u00f4 l\u1edbn. \u2696\ufe0f<\/p>\n<h2>\ud83c\udf1f L\u1ee3i \u00edch d\u00e0i h\u1ea1n<\/h2>\n<p>Vi\u1ec7c \u0111\u1ea7u t\u01b0 th\u1eddi gian v\u00e0o c\u00e1c nguy\u00ean t\u1eafc SOLID s\u1ebd mang l\u1ea1i l\u1ee3i \u00edch \u0111\u00e1ng k\u1ec3 khi d\u1ef1 \u00e1n ph\u00e1t tri\u1ec3n. Giai \u0111o\u1ea1n ph\u00e1t tri\u1ec3n ban \u0111\u1ea7u c\u00f3 th\u1ec3 c\u1ea3m th\u1ea5y ch\u1eadm h\u01a1n v\u00ec b\u1ea1n \u0111ang thi\u1ebft k\u1ebf c\u00e1c tr\u1eebu t\u01b0\u1ee3ng v\u00e0 giao di\u1ec7n. Tuy nhi\u00ean, khi c\u01a1 s\u1edf m\u00e3 m\u1edf r\u1ed9ng, t\u1ed1c \u0111\u1ed9 ph\u00e1t tri\u1ec3n s\u1ebd t\u0103ng l\u00ean. B\u1ea1n c\u00f3 th\u1ec3 th\u00eam t\u00ednh n\u0103ng nhanh h\u01a1n v\u00ec kh\u00f4ng c\u00f2n s\u1ee3 ch\u1ea1m v\u00e0o m\u00e3 ngu\u1ed3n hi\u1ec7n c\u00f3. N\u1ed7i s\u1ee3 l\u00e0m h\u1ecfng th\u1ee9 g\u00ec \u0111\u00f3 s\u1ebd gi\u1ea3m d\u1ea7n khi ki\u1ebfn tr\u00fac tr\u1edf n\u00ean v\u1eefng ch\u1eafc.<\/p>\n<ul>\n<li><strong>L\u00e0m quen<\/strong>: C\u00e1c nh\u00e0 ph\u00e1t tri\u1ec3n m\u1edbi c\u00f3 th\u1ec3 hi\u1ec3u h\u1ec7 th\u1ed1ng nhanh h\u01a1n v\u00ec c\u1ea5u tr\u00fac h\u1ee3p l\u00fd v\u00e0 nh\u1ea5t qu\u00e1n.<\/li>\n<li><strong>G\u1ee1 l\u1ed7i<\/strong>: C\u00e1c v\u1ea5n \u0111\u1ec1 d\u1ec5 \u0111\u01b0\u1ee3c x\u00e1c \u0111\u1ecbnh h\u01a1n v\u00ec c\u00e1c th\u00e0nh ph\u1ea7n \u0111\u01b0\u1ee3c t\u00e1ch bi\u1ec7t.<\/li>\n<li><strong>T\u00e1i c\u1ea5u tr\u00fac<\/strong>: Di chuy\u1ec3n m\u00e3 ho\u1eb7c thay \u0111\u1ed5i logic tr\u1edf th\u00e0nh m\u1ed9t thao t\u00e1c an to\u00e0n.<\/li>\n<li><strong>H\u1ee3p t\u00e1c<\/strong>: C\u00e1c \u0111\u1ed9i c\u00f3 th\u1ec3 l\u00e0m vi\u1ec7c tr\u00ean c\u00e1c m\u00f4-\u0111un kh\u00e1c nhau v\u1edbi \u00edt r\u1ee7i ro xung \u0111\u1ed9t h\u01a1n.<\/li>\n<\/ul>\n<p>H\u00e0nh tr\u00ecnh h\u01b0\u1edbng t\u1edbi m\u00e3 ngu\u1ed3n d\u1ec5 b\u1ea3o tr\u00ec l\u00e0 li\u00ean t\u1ee5c. N\u00f3 \u0111\u00f2i h\u1ecfi s\u1ef1 c\u1ea3nh gi\u00e1c v\u00e0 cam k\u1ebft v\u1edbi ch\u1ea5t l\u01b0\u1ee3ng. B\u1eb1ng c\u00e1ch th\u1ea5m nhu\u1ea7n nh\u1eefng nguy\u00ean t\u1eafc n\u00e0y, b\u1ea1n s\u1ebd x\u00e2y d\u1ef1ng \u0111\u01b0\u1ee3c c\u00e1c h\u1ec7 th\u1ed1ng kh\u00f4ng ch\u1ec9 ho\u1ea1t \u0111\u1ed9ng t\u1ed1t h\u00f4m nay, m\u00e0 c\u00f2n kh\u1ea3 thi trong nhi\u1ec1u n\u0103m t\u1edbi. M\u00e3 ngu\u1ed3n b\u1ea1n vi\u1ebft h\u00f4m nay ch\u00ednh l\u00e0 di s\u1ea3n b\u1ea1n \u0111\u1ec3 l\u1ea1i cho \u0111\u1ed9i ng\u0169 ng\u00e0y mai. H\u00e3y \u0111\u1ec3 n\u00f3 c\u00f3 \u00fd ngh\u0129a. \ud83c\udf31<\/p>\n<h2>\ud83d\udcdd T\u00f3m t\u1eaft v\u1ec1 tri\u1ec3n khai<\/h2>\n<p>T\u00f3m l\u1ea1i, vi\u1ec7c tri\u1ec3n khai c\u00e1c nguy\u00ean t\u1eafc SOLID \u0111\u00f2i h\u1ecfi m\u1ed9t s\u1ef1 thay \u0111\u1ed5i c\u00f3 ch\u1ee7 \u00fd trong c\u00e1ch b\u1ea1n thi\u1ebft k\u1ebf c\u00e1c l\u1edbp v\u00e0 t\u01b0\u01a1ng t\u00e1c gi\u1eefa ch\u00fang. T\u1eadp trung v\u00e0o tr\u00e1ch nhi\u1ec7m duy nh\u1ea5t \u0111\u1ec3 gi\u1ea3m \u0111\u1ed9 ph\u1ee9c t\u1ea1p. Thi\u1ebft k\u1ebf \u0111\u1ec3 m\u1edf r\u1ed9ng thay v\u00ec s\u1eeda \u0111\u1ed5i \u0111\u1ec3 b\u1ea3o v\u1ec7 m\u00e3 ngu\u1ed3n hi\u1ec7n c\u00f3. \u0110\u1ea3m b\u1ea3o c\u00e1c l\u1edbp con h\u00e0nh x\u1eed gi\u1ed1ng nh\u01b0 l\u1edbp cha \u0111\u1ec3 duy tr\u00ec s\u1ef1 tin t\u01b0\u1edfng. T\u00e1ch bi\u1ec7t c\u00e1c giao di\u1ec7n \u0111\u1ec3 ng\u0103n ch\u1eb7n c\u00e1c ph\u1ee5 thu\u1ed9c kh\u00f4ng c\u1ea7n thi\u1ebft. V\u00e0 \u0111\u1ea3o ng\u01b0\u1ee3c ph\u1ee5 thu\u1ed9c \u0111\u1ec3 t\u00e1ch bi\u1ec7t logic c\u1ea5p cao kh\u1ecfi chi ti\u1ebft c\u1ea5p th\u1ea5p.<\/p>\n<p>Nh\u1eefng nguy\u00ean t\u1eafc n\u00e0y t\u1ea1o th\u00e0nh m\u1ed9t khung t\u1ed5ng th\u1ec3 th\u1ed1ng nh\u1ea5t cho Ph\u00e2n t\u00edch v\u00e0 Thi\u1ebft k\u1ebf H\u01b0\u1edbng \u0111\u1ed1i t\u01b0\u1ee3ng. Ch\u00fang kh\u00f4ng ph\u1ea3i l\u00e0 nh\u1eefng quy t\u1eafc t\u00e1ch bi\u1ec7t m\u00e0 l\u00e0 nh\u1eefng kh\u00e1i ni\u1ec7m li\u00ean k\u1ebft v\u1edbi nhau, h\u1ed7 tr\u1ee3 l\u1eabn nhau. Khi \u0111\u01b0\u1ee3c \u00e1p d\u1ee5ng c\u00f9ng nhau, ch\u00fang t\u1ea1o n\u00ean m\u1ed9t ki\u1ebfn tr\u00fac v\u1eefng ch\u1eafc, c\u00f3 kh\u1ea3 n\u0103ng th\u00edch nghi v\u1edbi s\u1ef1 thay \u0111\u1ed5i. B\u1eaft \u0111\u1ea7u nh\u1ecf, ki\u00ean tr\u00ec nh\u1ea5t qu\u00e1n, v\u00e0 \u0111\u1ec3 c\u1ea5u tr\u00fac d\u1eabn d\u1eaft qu\u00e1 tr\u00ecnh ph\u00e1t tri\u1ec3n c\u1ee7a b\u1ea1n. \ud83c\udfd7\ufe0f<\/p>\n","protected":false},"excerpt":{"rendered":"<p>C\u00e1c h\u1ec7 th\u1ed1ng ph\u1ea7n m\u1ec1m lu\u00f4n thay \u0111\u1ed5i. Y\u00eau c\u1ea7u thay \u0111\u1ed5i, t\u00ednh n\u0103ng m\u1edf r\u1ed9ng v\u00e0 c\u00e1c b\u00e1o l\u1ed7i t\u00edch t\u1ee5 d\u1ea7n. Trong b\u1ed1i c\u1ea3nh n\u00e0y, ch\u1ea5t l\u01b0\u1ee3ng c\u1ea5u&hellip;<\/p>\n","protected":false},"author":1,"featured_media":3580,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_yoast_wpseo_title":"H\u01b0\u1edbng d\u1eabn Nguy\u00ean t\u1eafc SOLID: M\u00e3 ngu\u1ed3n OOP d\u1ec5 b\u1ea3o tr\u00ec \ud83d\udee0\ufe0f","_yoast_wpseo_metadesc":"H\u1ecdc c\u00e1ch tri\u1ec3n khai c\u00e1c nguy\u00ean t\u1eafc SOLID \u0111\u1ec3 c\u00f3 m\u00e3 ngu\u1ed3n d\u1ec5 b\u1ea3o tr\u00ec h\u01a1n. T\u00ecm hi\u1ec3u s\u00e2u v\u1ec1 SRP, OCP, LSP, ISP, DIP trong thi\u1ebft k\u1ebf h\u01b0\u1edbng \u0111\u1ed1i t\u01b0\u1ee3ng. Tr\u00e1nh n\u1ee3 k\u1ef9 thu\u1eadt.","fifu_image_url":"","fifu_image_alt":"","footnotes":""},"categories":[105],"tags":[103,104],"class_list":["post-3579","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-object-oriented-analysis-and-design","tag-academic","tag-object-oriented-analysis-and-design"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.1.1 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>H\u01b0\u1edbng d\u1eabn Nguy\u00ean t\u1eafc SOLID: M\u00e3 ngu\u1ed3n OOP d\u1ec5 b\u1ea3o tr\u00ec \ud83d\udee0\ufe0f<\/title>\n<meta name=\"description\" content=\"H\u1ecdc c\u00e1ch tri\u1ec3n khai c\u00e1c nguy\u00ean t\u1eafc SOLID \u0111\u1ec3 c\u00f3 m\u00e3 ngu\u1ed3n d\u1ec5 b\u1ea3o tr\u00ec h\u01a1n. T\u00ecm hi\u1ec3u s\u00e2u v\u1ec1 SRP, OCP, LSP, ISP, DIP trong thi\u1ebft k\u1ebf h\u01b0\u1edbng \u0111\u1ed1i t\u01b0\u1ee3ng. Tr\u00e1nh n\u1ee3 k\u1ef9 thu\u1eadt.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.go2posts.com\/vi\/implementing-solid-principles-maintainable-code\/\" \/>\n<meta property=\"og:locale\" content=\"vi_VN\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"H\u01b0\u1edbng d\u1eabn Nguy\u00ean t\u1eafc SOLID: M\u00e3 ngu\u1ed3n OOP d\u1ec5 b\u1ea3o tr\u00ec \ud83d\udee0\ufe0f\" \/>\n<meta property=\"og:description\" content=\"H\u1ecdc c\u00e1ch tri\u1ec3n khai c\u00e1c nguy\u00ean t\u1eafc SOLID \u0111\u1ec3 c\u00f3 m\u00e3 ngu\u1ed3n d\u1ec5 b\u1ea3o tr\u00ec h\u01a1n. T\u00ecm hi\u1ec3u s\u00e2u v\u1ec1 SRP, OCP, LSP, ISP, DIP trong thi\u1ebft k\u1ebf h\u01b0\u1edbng \u0111\u1ed1i t\u01b0\u1ee3ng. Tr\u00e1nh n\u1ee3 k\u1ef9 thu\u1eadt.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.go2posts.com\/vi\/implementing-solid-principles-maintainable-code\/\" \/>\n<meta property=\"og:site_name\" content=\"Go 2 Posts Vietnamese | Breaking Digital News &amp; Software Trends\" \/>\n<meta property=\"article:published_time\" content=\"2026-03-27T11:03:23+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.go2posts.com\/vi\/wp-content\/uploads\/sites\/22\/2026\/03\/solid-principles-whiteboard-infographic.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1664\" \/>\n\t<meta property=\"og:image:height\" content=\"928\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"vpadmin\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u0110\u01b0\u1ee3c vi\u1ebft b\u1edfi\" \/>\n\t<meta name=\"twitter:data1\" content=\"vpadmin\" \/>\n\t<meta name=\"twitter:label2\" content=\"\u01af\u1edbc t\u00ednh th\u1eddi gian \u0111\u1ecdc\" \/>\n\t<meta name=\"twitter:data2\" content=\"27 ph\u00fat\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.go2posts.com\/vi\/implementing-solid-principles-maintainable-code\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.go2posts.com\/vi\/implementing-solid-principles-maintainable-code\/\"},\"author\":{\"name\":\"vpadmin\",\"@id\":\"https:\/\/www.go2posts.com\/vi\/#\/schema\/person\/c083cc17ddd91b7201d38579fe36292d\"},\"headline\":\"H\u01b0\u1edbng d\u1eabn OOAD: Tri\u1ec3n khai c\u00e1c Nguy\u00ean t\u1eafc SOLID \u0111\u1ec3 vi\u1ebft m\u00e3 ngu\u1ed3n d\u1ec5 b\u1ea3o tr\u00ec\",\"datePublished\":\"2026-03-27T11:03:23+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.go2posts.com\/vi\/implementing-solid-principles-maintainable-code\/\"},\"wordCount\":5367,\"publisher\":{\"@id\":\"https:\/\/www.go2posts.com\/vi\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.go2posts.com\/vi\/implementing-solid-principles-maintainable-code\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.go2posts.com\/vi\/wp-content\/uploads\/sites\/22\/2026\/03\/solid-principles-whiteboard-infographic.jpg\",\"keywords\":[\"academic\",\"object-oriented analysis and design\"],\"articleSection\":[\"Object-Oriented Analysis and Design\"],\"inLanguage\":\"vi\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.go2posts.com\/vi\/implementing-solid-principles-maintainable-code\/\",\"url\":\"https:\/\/www.go2posts.com\/vi\/implementing-solid-principles-maintainable-code\/\",\"name\":\"H\u01b0\u1edbng d\u1eabn Nguy\u00ean t\u1eafc SOLID: M\u00e3 ngu\u1ed3n OOP d\u1ec5 b\u1ea3o tr\u00ec \ud83d\udee0\ufe0f\",\"isPartOf\":{\"@id\":\"https:\/\/www.go2posts.com\/vi\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.go2posts.com\/vi\/implementing-solid-principles-maintainable-code\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.go2posts.com\/vi\/implementing-solid-principles-maintainable-code\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.go2posts.com\/vi\/wp-content\/uploads\/sites\/22\/2026\/03\/solid-principles-whiteboard-infographic.jpg\",\"datePublished\":\"2026-03-27T11:03:23+00:00\",\"description\":\"H\u1ecdc c\u00e1ch tri\u1ec3n khai c\u00e1c nguy\u00ean t\u1eafc SOLID \u0111\u1ec3 c\u00f3 m\u00e3 ngu\u1ed3n d\u1ec5 b\u1ea3o tr\u00ec h\u01a1n. T\u00ecm hi\u1ec3u s\u00e2u v\u1ec1 SRP, OCP, LSP, ISP, DIP trong thi\u1ebft k\u1ebf h\u01b0\u1edbng \u0111\u1ed1i t\u01b0\u1ee3ng. Tr\u00e1nh n\u1ee3 k\u1ef9 thu\u1eadt.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.go2posts.com\/vi\/implementing-solid-principles-maintainable-code\/#breadcrumb\"},\"inLanguage\":\"vi\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.go2posts.com\/vi\/implementing-solid-principles-maintainable-code\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"vi\",\"@id\":\"https:\/\/www.go2posts.com\/vi\/implementing-solid-principles-maintainable-code\/#primaryimage\",\"url\":\"https:\/\/www.go2posts.com\/vi\/wp-content\/uploads\/sites\/22\/2026\/03\/solid-principles-whiteboard-infographic.jpg\",\"contentUrl\":\"https:\/\/www.go2posts.com\/vi\/wp-content\/uploads\/sites\/22\/2026\/03\/solid-principles-whiteboard-infographic.jpg\",\"width\":1664,\"height\":928},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.go2posts.com\/vi\/implementing-solid-principles-maintainable-code\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.go2posts.com\/vi\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"H\u01b0\u1edbng d\u1eabn OOAD: Tri\u1ec3n khai c\u00e1c Nguy\u00ean t\u1eafc SOLID \u0111\u1ec3 vi\u1ebft m\u00e3 ngu\u1ed3n d\u1ec5 b\u1ea3o tr\u00ec\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.go2posts.com\/vi\/#website\",\"url\":\"https:\/\/www.go2posts.com\/vi\/\",\"name\":\"Go 2 Posts Vietnamese | Breaking Digital News &amp; Software Trends\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/www.go2posts.com\/vi\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.go2posts.com\/vi\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"vi\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.go2posts.com\/vi\/#organization\",\"name\":\"Go 2 Posts Vietnamese | Breaking Digital News &amp; Software Trends\",\"url\":\"https:\/\/www.go2posts.com\/vi\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"vi\",\"@id\":\"https:\/\/www.go2posts.com\/vi\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.go2posts.com\/vi\/wp-content\/uploads\/sites\/22\/2025\/01\/logo.png\",\"contentUrl\":\"https:\/\/www.go2posts.com\/vi\/wp-content\/uploads\/sites\/22\/2025\/01\/logo.png\",\"width\":341,\"height\":46,\"caption\":\"Go 2 Posts Vietnamese | Breaking Digital News &amp; Software Trends\"},\"image\":{\"@id\":\"https:\/\/www.go2posts.com\/vi\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.go2posts.com\/vi\/#\/schema\/person\/c083cc17ddd91b7201d38579fe36292d\",\"name\":\"vpadmin\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"vi\",\"@id\":\"https:\/\/www.go2posts.com\/vi\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/56e0eb902506d9cea7c7e209205383146b8e81c0ef2eff693d9d5e0276b3d7e3?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/56e0eb902506d9cea7c7e209205383146b8e81c0ef2eff693d9d5e0276b3d7e3?s=96&d=mm&r=g\",\"caption\":\"vpadmin\"},\"sameAs\":[\"https:\/\/www.go2posts.com\"],\"url\":\"https:\/\/www.go2posts.com\/vi\/author\/vpadmin\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"H\u01b0\u1edbng d\u1eabn Nguy\u00ean t\u1eafc SOLID: M\u00e3 ngu\u1ed3n OOP d\u1ec5 b\u1ea3o tr\u00ec \ud83d\udee0\ufe0f","description":"H\u1ecdc c\u00e1ch tri\u1ec3n khai c\u00e1c nguy\u00ean t\u1eafc SOLID \u0111\u1ec3 c\u00f3 m\u00e3 ngu\u1ed3n d\u1ec5 b\u1ea3o tr\u00ec h\u01a1n. T\u00ecm hi\u1ec3u s\u00e2u v\u1ec1 SRP, OCP, LSP, ISP, DIP trong thi\u1ebft k\u1ebf h\u01b0\u1edbng \u0111\u1ed1i t\u01b0\u1ee3ng. Tr\u00e1nh n\u1ee3 k\u1ef9 thu\u1eadt.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.go2posts.com\/vi\/implementing-solid-principles-maintainable-code\/","og_locale":"vi_VN","og_type":"article","og_title":"H\u01b0\u1edbng d\u1eabn Nguy\u00ean t\u1eafc SOLID: M\u00e3 ngu\u1ed3n OOP d\u1ec5 b\u1ea3o tr\u00ec \ud83d\udee0\ufe0f","og_description":"H\u1ecdc c\u00e1ch tri\u1ec3n khai c\u00e1c nguy\u00ean t\u1eafc SOLID \u0111\u1ec3 c\u00f3 m\u00e3 ngu\u1ed3n d\u1ec5 b\u1ea3o tr\u00ec h\u01a1n. T\u00ecm hi\u1ec3u s\u00e2u v\u1ec1 SRP, OCP, LSP, ISP, DIP trong thi\u1ebft k\u1ebf h\u01b0\u1edbng \u0111\u1ed1i t\u01b0\u1ee3ng. Tr\u00e1nh n\u1ee3 k\u1ef9 thu\u1eadt.","og_url":"https:\/\/www.go2posts.com\/vi\/implementing-solid-principles-maintainable-code\/","og_site_name":"Go 2 Posts Vietnamese | Breaking Digital News &amp; Software Trends","article_published_time":"2026-03-27T11:03:23+00:00","og_image":[{"width":1664,"height":928,"url":"https:\/\/www.go2posts.com\/vi\/wp-content\/uploads\/sites\/22\/2026\/03\/solid-principles-whiteboard-infographic.jpg","type":"image\/jpeg"}],"author":"vpadmin","twitter_card":"summary_large_image","twitter_misc":{"\u0110\u01b0\u1ee3c vi\u1ebft b\u1edfi":"vpadmin","\u01af\u1edbc t\u00ednh th\u1eddi gian \u0111\u1ecdc":"27 ph\u00fat"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.go2posts.com\/vi\/implementing-solid-principles-maintainable-code\/#article","isPartOf":{"@id":"https:\/\/www.go2posts.com\/vi\/implementing-solid-principles-maintainable-code\/"},"author":{"name":"vpadmin","@id":"https:\/\/www.go2posts.com\/vi\/#\/schema\/person\/c083cc17ddd91b7201d38579fe36292d"},"headline":"H\u01b0\u1edbng d\u1eabn OOAD: Tri\u1ec3n khai c\u00e1c Nguy\u00ean t\u1eafc SOLID \u0111\u1ec3 vi\u1ebft m\u00e3 ngu\u1ed3n d\u1ec5 b\u1ea3o tr\u00ec","datePublished":"2026-03-27T11:03:23+00:00","mainEntityOfPage":{"@id":"https:\/\/www.go2posts.com\/vi\/implementing-solid-principles-maintainable-code\/"},"wordCount":5367,"publisher":{"@id":"https:\/\/www.go2posts.com\/vi\/#organization"},"image":{"@id":"https:\/\/www.go2posts.com\/vi\/implementing-solid-principles-maintainable-code\/#primaryimage"},"thumbnailUrl":"https:\/\/www.go2posts.com\/vi\/wp-content\/uploads\/sites\/22\/2026\/03\/solid-principles-whiteboard-infographic.jpg","keywords":["academic","object-oriented analysis and design"],"articleSection":["Object-Oriented Analysis and Design"],"inLanguage":"vi"},{"@type":"WebPage","@id":"https:\/\/www.go2posts.com\/vi\/implementing-solid-principles-maintainable-code\/","url":"https:\/\/www.go2posts.com\/vi\/implementing-solid-principles-maintainable-code\/","name":"H\u01b0\u1edbng d\u1eabn Nguy\u00ean t\u1eafc SOLID: M\u00e3 ngu\u1ed3n OOP d\u1ec5 b\u1ea3o tr\u00ec \ud83d\udee0\ufe0f","isPartOf":{"@id":"https:\/\/www.go2posts.com\/vi\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.go2posts.com\/vi\/implementing-solid-principles-maintainable-code\/#primaryimage"},"image":{"@id":"https:\/\/www.go2posts.com\/vi\/implementing-solid-principles-maintainable-code\/#primaryimage"},"thumbnailUrl":"https:\/\/www.go2posts.com\/vi\/wp-content\/uploads\/sites\/22\/2026\/03\/solid-principles-whiteboard-infographic.jpg","datePublished":"2026-03-27T11:03:23+00:00","description":"H\u1ecdc c\u00e1ch tri\u1ec3n khai c\u00e1c nguy\u00ean t\u1eafc SOLID \u0111\u1ec3 c\u00f3 m\u00e3 ngu\u1ed3n d\u1ec5 b\u1ea3o tr\u00ec h\u01a1n. T\u00ecm hi\u1ec3u s\u00e2u v\u1ec1 SRP, OCP, LSP, ISP, DIP trong thi\u1ebft k\u1ebf h\u01b0\u1edbng \u0111\u1ed1i t\u01b0\u1ee3ng. Tr\u00e1nh n\u1ee3 k\u1ef9 thu\u1eadt.","breadcrumb":{"@id":"https:\/\/www.go2posts.com\/vi\/implementing-solid-principles-maintainable-code\/#breadcrumb"},"inLanguage":"vi","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.go2posts.com\/vi\/implementing-solid-principles-maintainable-code\/"]}]},{"@type":"ImageObject","inLanguage":"vi","@id":"https:\/\/www.go2posts.com\/vi\/implementing-solid-principles-maintainable-code\/#primaryimage","url":"https:\/\/www.go2posts.com\/vi\/wp-content\/uploads\/sites\/22\/2026\/03\/solid-principles-whiteboard-infographic.jpg","contentUrl":"https:\/\/www.go2posts.com\/vi\/wp-content\/uploads\/sites\/22\/2026\/03\/solid-principles-whiteboard-infographic.jpg","width":1664,"height":928},{"@type":"BreadcrumbList","@id":"https:\/\/www.go2posts.com\/vi\/implementing-solid-principles-maintainable-code\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.go2posts.com\/vi\/"},{"@type":"ListItem","position":2,"name":"H\u01b0\u1edbng d\u1eabn OOAD: Tri\u1ec3n khai c\u00e1c Nguy\u00ean t\u1eafc SOLID \u0111\u1ec3 vi\u1ebft m\u00e3 ngu\u1ed3n d\u1ec5 b\u1ea3o tr\u00ec"}]},{"@type":"WebSite","@id":"https:\/\/www.go2posts.com\/vi\/#website","url":"https:\/\/www.go2posts.com\/vi\/","name":"Go 2 Posts Vietnamese | Breaking Digital News &amp; Software Trends","description":"","publisher":{"@id":"https:\/\/www.go2posts.com\/vi\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.go2posts.com\/vi\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"vi"},{"@type":"Organization","@id":"https:\/\/www.go2posts.com\/vi\/#organization","name":"Go 2 Posts Vietnamese | Breaking Digital News &amp; Software Trends","url":"https:\/\/www.go2posts.com\/vi\/","logo":{"@type":"ImageObject","inLanguage":"vi","@id":"https:\/\/www.go2posts.com\/vi\/#\/schema\/logo\/image\/","url":"https:\/\/www.go2posts.com\/vi\/wp-content\/uploads\/sites\/22\/2025\/01\/logo.png","contentUrl":"https:\/\/www.go2posts.com\/vi\/wp-content\/uploads\/sites\/22\/2025\/01\/logo.png","width":341,"height":46,"caption":"Go 2 Posts Vietnamese | Breaking Digital News &amp; Software Trends"},"image":{"@id":"https:\/\/www.go2posts.com\/vi\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/www.go2posts.com\/vi\/#\/schema\/person\/c083cc17ddd91b7201d38579fe36292d","name":"vpadmin","image":{"@type":"ImageObject","inLanguage":"vi","@id":"https:\/\/www.go2posts.com\/vi\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/56e0eb902506d9cea7c7e209205383146b8e81c0ef2eff693d9d5e0276b3d7e3?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/56e0eb902506d9cea7c7e209205383146b8e81c0ef2eff693d9d5e0276b3d7e3?s=96&d=mm&r=g","caption":"vpadmin"},"sameAs":["https:\/\/www.go2posts.com"],"url":"https:\/\/www.go2posts.com\/vi\/author\/vpadmin\/"}]}},"_links":{"self":[{"href":"https:\/\/www.go2posts.com\/vi\/wp-json\/wp\/v2\/posts\/3579","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.go2posts.com\/vi\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.go2posts.com\/vi\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.go2posts.com\/vi\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.go2posts.com\/vi\/wp-json\/wp\/v2\/comments?post=3579"}],"version-history":[{"count":0,"href":"https:\/\/www.go2posts.com\/vi\/wp-json\/wp\/v2\/posts\/3579\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.go2posts.com\/vi\/wp-json\/wp\/v2\/media\/3580"}],"wp:attachment":[{"href":"https:\/\/www.go2posts.com\/vi\/wp-json\/wp\/v2\/media?parent=3579"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.go2posts.com\/vi\/wp-json\/wp\/v2\/categories?post=3579"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.go2posts.com\/vi\/wp-json\/wp\/v2\/tags?post=3579"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}