{"id":2606,"date":"2018-08-22T21:53:57","date_gmt":"2018-08-22T13:53:57","guid":{"rendered":"https:\/\/nodelay.xyz\/?p=2606"},"modified":"2018-08-22T21:53:57","modified_gmt":"2018-08-22T13:53:57","slug":"%e9%9d%a2%e5%90%91%e5%af%b9%e8%b1%a1%e8%bd%af%e4%bb%b6%e8%ae%be%e8%ae%a1%e7%9a%84s-o-l-i-d%e5%8e%9f%e5%88%99","status":"publish","type":"post","link":"https:\/\/dayandcarrot.space\/?p=2606","title":{"rendered":"\u9762\u5411\u5bf9\u8c61\u8f6f\u4ef6\u8bbe\u8ba1\u7684S.O.L.I.D\u539f\u5219"},"content":{"rendered":"<p>\u5177\u4f53\u793a\u4f8b\u8bf7\u770b\u539f\u6587\uff1a<a href=\"https:\/\/scotch.io\/bar-talk\/s-o-l-i-d-the-first-five-principles-of-object-oriented-design\">S.O.L.I.D: The First 5 Principles of Object Oriented Design<\/a><br \/>\n<strong>S.O.L.I.D \u4ee3\u8868\u7740:<\/strong><br \/>\n<strong>S &#8211; Single-responsiblity principle \u5355\u4e00\u8d23\u4efb\u539f\u5219<\/strong><br \/>\n\u4e00\u4e2a\u7c7b\u5e94\u6709\u4e14\u4ec5\u6709\u4e00\u4e2a\u7406\u7531\u53bb\u53d8\u66f4\uff0c\u5373\u4e00\u4e2a\u7c7b\u53ea\u5e94\u7528\u4e8e\u4e00\u4e2a\u5de5\u4f5c\u3002<br \/>\n<strong>O &#8211; Open-closed principle \u5f00\u95ed\u539f\u5219<\/strong><br \/>\n\u5bf9\u8c61\u6216\u5b9e\u4f53\u53ea\u5e94\u8be5\u5f00\u653e\u6269\u5c55\uff0c\u800c\u4e0d\u8be5\u5f00\u653e\u4fee\u6539\u3002<br \/>\n\u6211\u7684\u7406\u89e3\u662f\u5e94\u8be5\u907f\u514d\u8d8a\u4fce\u4ee3\u5e96\u7684\u4e8b\u60c5\u53d1\u751f\uff0c\u4e0d\u5e94\u8be5\u5728\u8c03\u7528\u67d0\u7c7b\u5b9e\u4f53\u7684\u5730\u65b9\u53bb\u5173\u5fc3\u67d0\u4e2a\u5bf9\u8c61\u8be5\u65b9\u6cd5\u7684\u5177\u4f53\u5b9e\u73b0\u3002\u4f8b\u5982\u6709\u4e24\u4e2aShape\u7c7b\u7684\u7ee7\u627f\u7c7bCircle\u53caSquare\uff0c\u5728\u5bf9\u5404\u81ea\u8ba1\u7b97\u9762\u79ef\u7684\u65f6\u5019\uff0c\u5177\u4f53\u8ba1\u7b97\u9762\u79ef\u7684\u65b9\u6cd5\u4e0d\u662f\u8c03\u7528\u8005\u9700\u8981\u5173\u5fc3\u7684\uff0c\u5426\u5219\u6bcf\u589e\u52a0\u4e00\u79cd\u7ee7\u627f\u7c7b\u90fd\u8981\u53bb\u4fee\u6539\u8c03\u7528\u65b9\u6cd5\u3002<br \/>\n<strong>L &#8211; Liskov substitution principle \u674e\u65af\u67ef\u592b\u66ff\u4ee3\u539f\u5219<\/strong><br \/>\n\u4ee4q(x)\u662f\u5173\u4e8e\u7c7b\u578bT\u7684\u5bf9\u8c61x\u7684\u53ef\u8bc1\u660e\u5c5e\u6027\u3002\u90a3\u4e48\u5bf9\u4e8eT\u7684\u5b50\u7c7b\u578bS\u7684\u5bf9\u8c61y\uff0cq(y)\u4e5f\u5e94\u8be5\u662f\u53ef\u8bc1\u660e\u7684\u3002<br \/>\n\u8fd9\u4e2a\u662f\u5b98\u8bdd\uff0c\u7b80\u5355\u6765\u8bf4\u5c31\u662f\u6bcf\u4e2a\u5b50\u7c7b\u90fd\u5e94\u8be5\u53ef\u66ff\u4ee3\u4ed6\u4eec\u7684\u7236\u7c7b\uff0c\u6240\u8c13\u201c\u5b50\u627f\u7236\u4e1a\u201d\u3002<br \/>\n<strong>I &#8211; Interface segregation principle \u63a5\u53e3\u5206\u79bb\u539f\u5219<\/strong><br \/>\n\u6c38\u8fdc\u4e0d\u5e94\u8be5\u5f3a\u8feb\u7528\u6237\u5b9e\u73b0\u5b83\u4e0d\u4f7f\u7528\u7684\u63a5\u53e3\uff0c\u6216\u4e0d\u5e94\u8be5\u5f3a\u8feb\u7528\u6237\u4f9d\u8d56\u4e8e\u4ed6\u4eec\u4e0d\u4f7f\u7528\u7684\u65b9\u6cd5\u3002<br \/>\n\u6bd4\u5982\u4e0d\u5e94\u8be5\u8ba9\u4e00\u4e2a\u4e8c\u7ef4\u5e73\u9762\u7684\u7c7b\u53bb\u5b9e\u73b0\u4e00\u4e2a\u8ba1\u7b97\u4f53\u79ef\u7684\u65b9\u6cd5\u3002<br \/>\n<strong>D &#8211; Dependency Inversion Principle \u4f9d\u8d56\u5012\u7f6e\u539f\u5219<\/strong><br \/>\n\u5b9e\u4f53\u5fc5\u987b\u4f9d\u8d56\u4e8e\u62bd\u8c61\uff0c\u800c\u4e0d\u662f\u5177\u8c61\u3002\u9ad8\u7ea7\u522b\u7684\u6a21\u5757\u4e0d\u80fd\u4f9d\u8d56\u4e8e\u4f4e\u7ea7\u522b\u6a21\u5757\uff0c\u800c\u662f\u9700\u8981\u4f9d\u8d56\u4e8e\u67d0\u79cd\u62bd\u8c61\u3002<br \/>\n\u6bd4\u5982\u4e00\u4e2aGateway\u7c7b\u9700\u8981\u901a\u8fc7\u67d0\u79cd\u7f51\u7edcIO\u63a5\u6536\u6570\u636e\uff0c\u5b83\u5e94\u8be5\u4f9d\u8d56\u4e8e\u4e00\u79cdIO\u63a5\u53e3\u7684\u62bd\u8c61\u800c\u4e0d\u662f\u5177\u4f53\u7684\u67d0\u79cdIO\uff08\u6bd4\u5982UDP IO)\uff0c\u5426\u5219\u5f53\u4f60\u60f3\u6362\u4e00\u79cdIO\u505a\u540c\u6837\u7684\u4e8b\u60c5\u65f6\u4f60\u5c31\u4f1a\u5f88\u5934\u75bc\u3002<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u5177\u4f53\u793a\u4f8b\u8bf7\u770b\u539f\u6587\uff1aS.O.L.I.D: The First 5 Principles of Object Oriented Design S.O.L.I.D \u4ee3\u8868\u7740: S &#8211; Single-responsiblity principle \u5355\u4e00\u8d23\u4efb\u539f\u5219 \u4e00\u4e2a\u7c7b\u5e94\u6709\u4e14\u4ec5\u6709\u4e00\u4e2a\u7406\u7531\u53bb\u53d8\u66f4\uff0c\u5373\u4e00\u4e2a\u7c7b\u53ea\u5e94\u7528\u4e8e\u4e00\u4e2a\u5de5\u4f5c\u3002 O &#8211; Open-closed principle \u5f00\u95ed\u539f\u5219 \u5bf9\u8c61\u6216\u5b9e\u4f53\u53ea\u5e94\u8be5\u5f00\u653e\u6269\u5c55\uff0c\u800c\u4e0d\u8be5\u5f00\u653e\u4fee\u6539\u3002 \u6211\u7684\u7406\u89e3\u662f\u5e94\u8be5\u907f\u514d\u8d8a\u4fce\u4ee3\u5e96\u7684\u4e8b\u60c5\u53d1\u751f\uff0c\u4e0d\u5e94\u8be5\u5728\u8c03\u7528\u67d0\u7c7b\u5b9e\u4f53\u7684\u5730\u65b9\u53bb\u5173\u5fc3\u67d0\u4e2a\u5bf9\u8c61\u8be5\u65b9\u6cd5\u7684\u5177\u4f53\u5b9e\u73b0\u3002\u4f8b\u5982\u6709\u4e24\u4e2aShape\u7c7b\u7684\u7ee7\u627f\u7c7bCircle\u53caSquare\uff0c\u5728\u5bf9\u5404\u81ea\u8ba1\u7b97\u9762\u79ef\u7684\u65f6\u5019\uff0c\u5177\u4f53\u8ba1\u7b97\u9762\u79ef\u7684\u65b9\u6cd5\u4e0d\u662f\u8c03\u7528\u8005\u9700\u8981\u5173\u5fc3\u7684\uff0c\u5426\u5219\u6bcf\u589e\u52a0\u4e00\u79cd\u7ee7\u627f\u7c7b\u90fd\u8981\u53bb\u4fee\u6539\u8c03\u7528\u65b9\u6cd5\u3002 L &#8211; Liskov substitution principle \u674e\u65af\u67ef\u592b\u66ff\u4ee3\u539f\u5219 \u4ee4q(x)\u662f\u5173\u4e8e\u7c7b\u578bT\u7684\u5bf9\u8c61x\u7684\u53ef\u8bc1\u660e\u5c5e\u6027\u3002\u90a3\u4e48\u5bf9\u4e8eT\u7684\u5b50\u7c7b\u578bS\u7684\u5bf9\u8c61y\uff0cq(y)\u4e5f\u5e94\u8be5\u662f\u53ef\u8bc1\u660e\u7684\u3002 \u8fd9\u4e2a\u662f\u5b98\u8bdd\uff0c\u7b80\u5355\u6765\u8bf4\u5c31\u662f\u6bcf\u4e2a\u5b50\u7c7b\u90fd\u5e94\u8be5\u53ef\u66ff\u4ee3\u4ed6\u4eec\u7684\u7236\u7c7b\uff0c\u6240\u8c13\u201c\u5b50\u627f\u7236\u4e1a\u201d\u3002 I &#8211; Interface segregation principle \u63a5\u53e3\u5206\u79bb\u539f\u5219 \u6c38\u8fdc\u4e0d\u5e94\u8be5\u5f3a\u8feb\u7528\u6237\u5b9e\u73b0\u5b83\u4e0d\u4f7f\u7528\u7684\u63a5\u53e3\uff0c\u6216\u4e0d\u5e94\u8be5\u5f3a\u8feb\u7528\u6237\u4f9d\u8d56\u4e8e\u4ed6\u4eec\u4e0d\u4f7f\u7528\u7684\u65b9\u6cd5\u3002 \u6bd4\u5982\u4e0d\u5e94\u8be5\u8ba9\u4e00\u4e2a\u4e8c\u7ef4\u5e73\u9762\u7684\u7c7b\u53bb\u5b9e\u73b0\u4e00\u4e2a\u8ba1\u7b97\u4f53\u79ef\u7684\u65b9\u6cd5\u3002 D &#8211; Dependency Inversion Principle \u4f9d\u8d56\u5012\u7f6e\u539f\u5219 \u5b9e\u4f53\u5fc5\u987b\u4f9d\u8d56\u4e8e\u62bd\u8c61\uff0c\u800c\u4e0d\u662f\u5177\u8c61\u3002\u9ad8\u7ea7\u522b\u7684\u6a21\u5757\u4e0d\u80fd\u4f9d\u8d56\u4e8e\u4f4e\u7ea7\u522b\u6a21\u5757\uff0c\u800c\u662f\u9700\u8981\u4f9d\u8d56\u4e8e\u67d0\u79cd\u62bd\u8c61\u3002 \u6bd4\u5982\u4e00\u4e2aGateway\u7c7b\u9700\u8981\u901a\u8fc7\u67d0\u79cd\u7f51\u7edcIO\u63a5\u6536\u6570\u636e\uff0c\u5b83\u5e94\u8be5\u4f9d\u8d56\u4e8e\u4e00\u79cdIO\u63a5\u53e3\u7684\u62bd\u8c61\u800c\u4e0d\u662f\u5177\u4f53\u7684\u67d0\u79cdIO\uff08\u6bd4\u5982UDP IO)\uff0c\u5426\u5219\u5f53\u4f60\u60f3\u6362\u4e00\u79cdIO\u505a\u540c\u6837\u7684\u4e8b\u60c5\u65f6\u4f60\u5c31\u4f1a\u5f88\u5934\u75bc\u3002<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4],"tags":[203,210],"class_list":["post-2606","post","type-post","status-publish","format-standard","hentry","category-study","tag-203","tag-210"],"_links":{"self":[{"href":"https:\/\/dayandcarrot.space\/index.php?rest_route=\/wp\/v2\/posts\/2606","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/dayandcarrot.space\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/dayandcarrot.space\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/dayandcarrot.space\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/dayandcarrot.space\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=2606"}],"version-history":[{"count":0,"href":"https:\/\/dayandcarrot.space\/index.php?rest_route=\/wp\/v2\/posts\/2606\/revisions"}],"wp:attachment":[{"href":"https:\/\/dayandcarrot.space\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=2606"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/dayandcarrot.space\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=2606"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/dayandcarrot.space\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=2606"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}