{"id":215,"date":"2020-10-05T08:02:54","date_gmt":"2020-10-05T08:02:54","guid":{"rendered":"https:\/\/turtleflyblog.com\/?p=215"},"modified":"2022-02-28T09:47:34","modified_gmt":"2022-02-28T09:47:34","slug":"solid-dip-2","status":"publish","type":"post","link":"https:\/\/turtleflyblog.com\/zh\/2020\/10\/05\/solid-dip-2\/","title":{"rendered":"SOLID \u8a2d\u8a08\u539f\u5247 \u2013 \u4f9d\u8cf4\u5012\u8f49\uff08DIP\uff09"},"content":{"rendered":"\n
\u672c\u6587\u4ecb\u7d39S.O.L.I.D\u539f\u5247\u4e2d\u7684\u4ecb\u9762\u9694\u96e2\u539f\u5247<\/strong>(Dependency Inversion Principle\uff0c\u7e2e\u5beb\u70baDIP)\u3002<\/p>\n\n\n\n \u5b9a\u7fa9:<\/strong><\/p>\n\n\n\n \u9ad8\u5c64\u6b21\u7684\u6a21\u7d44\u4e0d\u61c9\u8a72\u4f9d\u8cf4\u65bc\u4f4e\u5c64\u6b21\u7684\u6a21\u7d44\uff0c\u5169\u8005\u90fd\u61c9\u8a72\u4f9d\u8cf4\u65bc\u62bd\u8c61\u4ecb\u9762\u3002<\/p>\n\n\n\n \u62bd\u8c61\u4ecb\u9762\u4e0d\u61c9\u8a72\u4f9d\u8cf4\u65bc\u7d30\u7bc0\u3002\u800c\u7d30\u7bc0\u5247\u61c9\u8a72\u4f9d\u8cf4\u65bc\u62bd\u8c61\u4ecb\u9762\u3002<\/p>\n\n\n\n High level modules should not depend upon low level modules. Both should depend upon abstractions. Abstractions should not depend upon details. Details should depend upon abstractions<\/em><\/p>\n\n\n\n \u89e3\u91cb:<\/strong> \u8207\u5176\u5177\u9ad4\u7684\u6307\u660e\u7269\u4ef6\u95dc\u4fc2\uff0c\u4e0d\u5982\u62bd\u8c61\u89c0\u5ff5\u66ff\u4ee3<\/p>\n\n\n\n \u4f8b\u5b50:<\/strong> \u5047\u5982\u4f60\u4eca\u5929\u4e0b\u73ed\u5f8c\u5230\u4e00\u5bb6\u9910\u5ef3\u7528\u9910\uff0c\u4f60\u5148\u9078\u64c7\u5403\u8766\u4ec1\u7092\u98ef(\u5177\u9ad4<\/strong>)\uff0c\u4f46\u670d\u52d9\u751f\u544a\u8a34\u4f60\u8766\u4ec1\u7092\u98ef\u5df2\u8ce3\u5b8c\u3002\u6240\u4ee5\u70ba\u4e86\u9810\u9632\u9019\u7a2e\u60c5\u6cc1\u767c\u751f\uff0c\u4f60\u61c9\u8a72\u9078\u64c7\u5176\u5b83\u9910\u9ede(\u62bd\u8c61<\/strong>)\u3002\u9019\u6a23\u4f60\u7684\u665a\u9910\u9078\u64c7\u6027\u5c31\u591a\u4e86\u3002<\/p>\n\n\n\n \u7a0b\u5f0f\u78bc\u7bc4\u4f8b:<\/strong><\/p>\n\n\n\n \u5728C#\u7bc4\u4f8b\u88e1\uff0c\u6211\u5011\u7528Unity\u5957\u4ef6\u5e6b\u6211\u7528IOC\u5bb9\u5668\u6982\u5ff5\u5be6\u73feDIP\u539f\u5247\u3002<\/p>\n\n\n\n \u63a7\u5236\u53cd\u8f49\uff08IoC\uff09\uff1a\u672c\u540d\u70ba<\/strong>Inversion Of Control\uff0c\u4e5f\u5c31\u662f\u61c9\u7528\u7a0b\u5f0f\u628a\u7269\u4ef6\u7684\u5efa\u7acb\u548c\u7dad\u8b77\u6b0a\u4ea4\u7d66\u5916\u90e8\u5bb9\u5668(Unity)\u4f86\u5be6\u4f5c\u548c\u8ca0\u8cac\uff0c\u4e5f\u5c31\u662f\u63a7\u5236\u6b0a\u8f49\u79fb\u5230\u5916\u90e8IoC\u5bb9\u5668\u8ca0\u8cac<\/p>\n\n\n\n \u4f9d\u8cf4\u6ce8\u5165(DI):<\/strong> \u672c\u540d\u70baDependency Injection\u5247\u70ba\u5be6\u73feIoC\u7684\u65b9\u6cd5\u3002<\/p>\n\n\n\n \u5efa\u7acb\u4ecb\u9762<\/p>\n\n\n\n \u5be6\u4f5c\u4ecb\u9762(\u725b\u8089\u9eb5\u548c\u8766\u4ec1\u7092\u98ef)<\/p>\n\n\n\n \u8766\u4ec1\u7092\u98ef<\/p>\n\n\n\n \u725b\u8089\u9eb5<\/p>\n\n\n\n \u4e3b\u63a7\u53f0\u90e8\u5206<\/p>\n\n\n\n \u57f7\u884c\u7d50\u679c<\/p>\n\n\n\n \u7d50\u8a9e:<\/strong><\/p>\n\n\n\n DIP\u4e3b\u8981\u76ee\u7684\u662f\u9054\u6210loose coupling\u300c\u5bec\u9b06\u8026\u5408<\/strong>\u300d\u3002<\/strong>\u8a66\u60f3\u4f60\u5982\u679c\u628a\u5177\u9ad4\u985e\u5225\u5beb\u6b7b\uff0c\u4ee5\u5f8c\u5982\u679c\u4f60\u8981\u505a\u55ae\u5143\u6e2c\u8a66\uff0c\u90a3\u5c31\u8981\u70ba\u6bcf\u500b\u5177\u9ad4\u985e\u5225\u5404\u5225\u505a\u55ae\u5143\u6e2c\u8a66\u3002\u5982\u679c\u6539\u7528DIP\u548cunity\u5957\u4ef6\uff0c\u5c31\u7121\u9700\u5982\u6b64\u4e14\u53ef\u589e\u52a0\u7a0b\u5f0f\u78bc\u7684\u53ef\u7dad\u8b77\u6027\u3002<\/strong><\/p>\n","protected":false},"excerpt":{"rendered":" \u672c\u6587\u4ecb\u7d39S.O.L.I.D\u539f\u5247\u4e2d\u7684\u4ecb\u9762\u9694\u96e2\u539f\u5247(Dependency Inversion Principle\uff0c\u7e2e\u5beb\u70baDIP)\u3002 \u5b9a\u7fa9: \u9ad8\u5c64\u6b21\u7684\u6a21\u7d44\u4e0d\u61c9\u8a72\u4f9d\u8cf4\u65bc\u4f4e\u5c64\u6b21\u7684\u6a21\u7d44\uff0c\u5169\u8005\u90fd\u61c9\u8a72\u4f9d\u8cf4\u65bc\u62bd\u8c61\u4ecb\u9762\u3002 \u62bd\u8c61\u4ecb\u9762\u4e0d\u61c9\u8a72\u4f9d\u8cf4\u65bc\u7d30\u7bc0\u3002\u800c\u7d30\u7bc0\u5247\u61c9\u8a72\u4f9d\u8cf4\u65bc\u62bd\u8c61\u4ecb\u9762\u3002 High level modules should not depend upon low level modules. Both should depend upon abstractions. Abstractions should not depend upon details. Details should depend upon abstractions \u89e3\u91cb: \u8207\u5176\u5177\u9ad4\u7684\u6307\u660e\u7269\u4ef6\u95dc\u4fc2\uff0c\u4e0d\u5982\u62bd\u8c61\u89c0\u5ff5\u66ff\u4ee3 \u4f8b\u5b50: \u5047\u5982\u4f60\u4eca\u5929\u4e0b\u73ed\u5f8c\u5230\u4e00\u5bb6\u9910\u5ef3\u7528\u9910\uff0c\u4f60\u5148\u9078\u64c7\u5403\u8766\u4ec1\u7092\u98ef(\u5177\u9ad4)\uff0c\u4f46\u670d\u52d9\u751f\u544a\u8a34\u4f60\u8766\u4ec1\u7092\u98ef\u5df2\u8ce3\u5b8c\u3002\u6240\u4ee5\u70ba\u4e86\u9810\u9632\u9019\u7a2e\u60c5\u6cc1\u767c\u751f\uff0c\u4f60\u61c9\u8a72\u9078\u64c7\u5176\u5b83\u9910\u9ede(\u62bd\u8c61)\u3002\u9019\u6a23\u4f60\u7684\u665a\u9910\u9078\u64c7\u6027\u5c31\u591a\u4e86\u3002 \u7a0b\u5f0f\u78bc\u7bc4\u4f8b: \u5728C#\u7bc4\u4f8b\u88e1\uff0c\u6211\u5011\u7528Unity\u5957\u4ef6\u5e6b\u6211\u7528IOC\u5bb9\u5668\u6982\u5ff5\u5be6\u73feDIP\u539f\u5247\u3002 \u63a7\u5236\u53cd\u8f49\uff08IoC\uff09\uff1a\u672c\u540d\u70baInversion Of Control\uff0c\u4e5f\u5c31\u662f\u61c9\u7528\u7a0b\u5f0f\u628a\u7269\u4ef6\u7684\u5efa\u7acb\u548c\u7dad\u8b77\u6b0a\u4ea4\u7d66\u5916\u90e8\u5bb9\u5668(Unity)\u4f86\u5be6\u4f5c\u548c\u8ca0\u8cac\uff0c\u4e5f\u5c31\u662f\u63a7\u5236\u6b0a\u8f49\u79fb\u5230\u5916\u90e8IoC\u5bb9\u5668\u8ca0\u8cac \u4f9d\u8cf4\u6ce8\u5165(DI): \u672c\u540d\u70baDependency Injection\u5247\u70ba\u5be6\u73feIoC\u7684\u65b9\u6cd5\u3002 \u5efa\u7acb\u4ecb\u9762 \u5be6\u4f5c\u4ecb\u9762(\u725b\u8089\u9eb5\u548c\u8766\u4ec1\u7092\u98ef) \u8766\u4ec1\u7092\u98ef \u725b\u8089\u9eb5 \u4e3b\u63a7\u53f0\u90e8\u5206 \u57f7\u884c\u7d50\u679c \u7d50\u8a9e: DIP\u4e3b\u8981\u76ee\u7684\u662f\u9054\u6210loose coupling\u300c\u5bec\u9b06\u8026\u5408\u300d\u3002\u8a66\u60f3\u4f60\u5982\u679c\u628a\u5177\u9ad4\u985e\u5225\u5beb\u6b7b\uff0c\u4ee5\u5f8c\u5982\u679c\u4f60\u8981\u505a\u55ae\u5143\u6e2c\u8a66\uff0c\u90a3\u5c31\u8981\u70ba\u6bcf\u500b\u5177\u9ad4\u985e\u5225\u5404\u5225\u505a\u55ae\u5143\u6e2c\u8a66\u3002\u5982\u679c\u6539\u7528DIP\u548cunity\u5957\u4ef6\uff0c\u5c31\u7121\u9700\u5982\u6b64\u4e14\u53ef\u589e\u52a0\u7a0b\u5f0f\u78bc\u7684\u53ef\u7dad\u8b77\u6027\u3002<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"nf_dc_page":"","om_disable_all_campaigns":false,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[35],"tags":[],"class_list":["post-215","post","type-post","status-publish","format-standard","hentry","category--zh"],"yoast_head":"\n<\/figure>\n\n\n\n
<\/figure>\n\n\n\n
<\/figure>\n\n\n\n
<\/figure>\n\n\n\n
<\/figure>\n\n\n\n
<\/figure>\n\n\n\n
<\/figure>\n\n\n\n