{"id":884,"date":"2020-05-24T19:55:16","date_gmt":"2020-05-24T10:55:16","guid":{"rendered":"https:\/\/www.skyer9.pe.kr\/wordpress\/?p=884"},"modified":"2020-05-24T20:45:20","modified_gmt":"2020-05-24T11:45:20","slug":"%ea%b0%9d%ec%b2%b4%ec%a7%80%ed%96%a5-%ec%84%a4%ea%b3%84%ec%9d%98-5%ec%9b%90%ec%b9%99-s-o-l-i-d","status":"publish","type":"post","link":"https:\/\/www.skyer9.pe.kr\/wordpress\/?p=884","title":{"rendered":"\uac1d\uccb4\uc9c0\ud5a5 \uc124\uacc4\uc758 5\uc6d0\uce59 S.O.L.I.D"},"content":{"rendered":"<h1>\uac1d\uccb4\uc9c0\ud5a5 \uc124\uacc4\uc758 5\uc6d0\uce59 S.O.L.I.D<\/h1>\n<h2>\uc798\ubabb\ub41c \ucf54\ub529\uc774\ub780?<\/h2>\n<ul>\n<li>\n<p>\ub192\uc740 \uacb0\ud569\ub3c4<\/p>\n<p>\uc815\ubcf4(\ub370\uc774\ud0c0)\uac00 \uc678\ubd80\uc5d0 \ub178\ucd9c\ub418\uba74 \ub420\uc218\ub85d, \uc5ec\ub7ec \uac1d\uccb4\uc5d0\uc11c \uadf8 \uc815\ubcf4\ub97c \uc774\uc6a9\ud558\uac8c \ub418\uace0, \uc815\ubcf4\ub97c \ubcc0\uacbd\ud558\ub824 \ud560 \ub54c, \uadf8 \uc815\ubcf4\uc5d0 \uc758\uc874\ud558\ub294 \ubaa8\ub4e0 \uac1d\uccb4\ub97c \uac19\uc774 \uc218\uc815\ud574\uc57c \ud558\uae30\uc5d0, \uc218\uc815\uc774 \uc5b4\ub824\uc6cc\uc9d1\ub2c8\ub2e4.(\ucd94\uc0c1\ud654 \uc704\ubc18)<\/p>\n<\/li>\n<li>\n<p>\ub0ae\uc740 \uc751\uc9d1\ub3c4<\/p>\n<p>\ud558\ub098\uc758 \uac1d\uccb4 \uc815\ubcf4\ubcc0\uacbd\uc774 \ub2e4\ub978 \uac1d\uccb4\uc5d0 \uc758\ud574 \uc774\ub8e8\uc5b4\uc9c0\uba74, \uc18c\uc2a4\ub97c \uc218\uc815\ud558\ub824 \ud560\ub54c \uc5b4\ub5a4 \uac1d\uccb4\uc5d0 \uc758\ud574 \uc815\ubcf4\ubcc0\uacbd\uc774 \uc774\ub8e8\uc5b4\uc9c0\ub294\uc9c0 \ucc3e\uc544\uc57c \ud558\uace0, \ucc3e\uc740 \uc18c\uc2a4\ub97c \uac19\uc774 \uc218\uc815\ud574\uc57c \ud569\ub2c8\ub2e4.(\ucea1\uc290\ud654 \uc704\ubc18)<\/p>\n<\/li>\n<li>\n<p>\uc4f8\ub370 \uc5c6\uc774 \ubcf5\uc7a1\ud568<\/p>\n<p>\uc9c0\ub098\uce58\uac8c \ubcf5\uc7a1\ud558\uac8c \ub514\uc790\uc778\ud55c \ucf54\ub4dc\ub3c4 \uc18c\uc2a4\uc758 \uac00\ub3c5\uc131\uc744 \ud574\uce69\ub2c8\ub2e4.<\/p>\n<\/li>\n<\/ul>\n<h2>The Single Responsibility Principle &#8211; SRP<\/h2>\n<blockquote>\n<p>\uc5b4\ub5a4 \ud074\ub798\uc2a4\ub97c \ubcc0\uacbd\ud574\uc57c \ud558\ub294 \uc774\uc720\ub294 \uc624\uc9c1 \ud558\ub098\ubfd0 \uc774\uc5b4\uc57c \ud55c\ub2e4.<\/p>\n<\/blockquote>\n<p>\uc1fc\ud551\ubab0 \uc0c1\ud488 \uac1d\uccb4\uac00 \uc788\ub2e4\uace0 \ud560\ub54c, \uc0c1\ud488\ud398\uc774\uc9c0\uc5d0 \uc4f0\uc774\ub294 \uc0c1\ud488\uac1d\uccb4\uc640 \uc774\ubbf8 \uc8fc\ubb38\uc744 \ub05d\ub0b8 \uc774\ud6c4\uc5d0 \ud45c\uc2dc\ub418\ub294 \uc0c1\ud488\uac1d\uccb4\ub294 \uac01\uac01 \uc0dd\uc131\ud574\uc57c \ud569\ub2c8\ub2e4.<\/p>\n<p>\ud558\ub098\uc758 \uac1d\uccb4\uac00 \uc5ec\ub7ec\uacf3\uc5d0 \uc4f0\uc774\uba74 \uc4f0\uc77c\uc218\ub85d, \ubcc0\uacbd\uc774 \uc7a6\uc544\uc9c0\uace0 \ub610 \ubc84\uadf8\uc758 \uc704\ud5d8\uc131\uc740 \uc99d\uac00\ud569\ub2c8\ub2e4.<\/p>\n<h2>The Open-Closed Principle &#8211; OCP<\/h2>\n<blockquote>\n<p>\uc18c\ud504\ud2b8\uc6e8\uc5b4 \uc5d4\ud130\ud2f0(\ud074\ub798\uc2a4, \ubaa8\ub4c8, \ud568\uc218 \ub4f1\ub4f1)\ub294 Interface\uc5d0 \ub300\ud574\uc11c\ub294 \uac1c\ubc29\ub418\uc5b4\uc57c \ud558\uc9c0\ub9cc, \ubcc0\uacbd\uc5d0 \ub300\ud574\uc11c\ub294 \ud3d0\uc1c4\ub418\uc5b4\uc57c \ud55c\ub2e4.<\/p>\n<\/blockquote>\n<p>\uad6c\ud604\uacfc \uc778\ud130\ud398\uc774\uc2a4\uc758 \ubd84\ub9ac\ub77c\uace0\ub3c4 \ud569\ub2c8\ub2e4. \uac1d\uccb4\ub97c \uc774\uc6a9\ud560 \ub54c \uc778\ud130\ud398\uc774\uc2a4\ub97c \uc774\uc6a9\ud574 \ud638\ucd9c\ud558\uc9c0\ub9cc, \uac1d\uccb4\ub0b4\ubd80\uc758 \uc2e4\uc81c \uad6c\ud604\uc740 \uc678\ubd80\uc5d0 \ub178\ucd9c\ub418\uc5b4\uc11c\ub294 \uc548\ub429\ub2c8\ub2e4. \uad6c\ud604\uc774 \uc678\ubd80\uc5d0 \ub178\ucd9c\ub418\uba74 \uadf8 \uac1d\uccb4\ub294 \ubcc0\uacbd\uc774 \uc81c\ud55c\ub418\uac70\ub098 \ubd88\uac00\ub2a5\ud574\uc9d1\ub2c8\ub2e4.<\/p>\n<h2>Liskov Substitution Principle &#8211; LSP<\/h2>\n<blockquote>\n<p>\uc11c\ube0c\ud0c0\uc785(Sub Type)\uc740 \uc5b8\uc81c\ub098 \uc790\uc2e0\uc758 \uae30\ubc18 \ud0c0\uc785(Base Type)\uc73c\ub85c \uad50\uccb4\ud560 \uc218 \uc788\uc5b4\uc57c \ud55c\ub2e4.<\/p>\n<\/blockquote>\n<p>\ubd80\ubaa8\uac1d\uccb4\ub97c \uc0c1\uc18d\ud55c \uc790\uc2dd\uac1d\uccb4\ub294 \uc5b8\uc81c\ub098 \ubd80\ubaa8\uac1d\uccb4\uac00 \uc4f0\uc774\ub294 \uacf3\uc5d0 \uad50\uccb4\ub418\uc5b4 \uc4f0\uc77c \uc218 \uc788\uc5b4\uc57c \ud569\ub2c8\ub2e4.<\/p>\n<p>\uc790\uc2dd\uac1d\uccb4\uac00 \ubd80\ubaa8\uac1d\uccb4\uc758 \uc6d0\ub798\uc758 \uae30\ub2a5\uc744 \ube44\ud65c\uc131\ud654\uc2dc\ud0a4\uac70\ub098 \ub300\uccb4 \ubd88\uac00\ub2a5\ud560 \uc815\ub3c4\ub85c \ubcc0\uacbd\ud574\uc11c\ub294 \uc548\ub429\ub2c8\ub2e4.<\/p>\n<h2>Dependency Inversion Principle &#8211; DIP<\/h2>\n<blockquote>\n<p>\uace0\ucc28\uc6d0\uc758 \ubaa8\ub4c8\uc740 \uc800\ucc28\uc6d0\uc758 \ubaa8\ub4c8\uc5d0 \uc758\uc874\ud558\uba74 \uc548\ub41c\ub2e4. \uc774 \ub450 \ubaa8\ub4c8 \ubaa8\ub450 \ub2e4\ub978 \ucd94\uc0c1\ud654\ub41c \uac83\uc5d0 \uc758\uc874\ud55c\ub2e4. \ucd94\uc0c1\ud654 \ub41c \uac83\uc740 \uad6c\uccb4\uc801\uc778 \uac83\uc5d0 \uc758\uc874\ud558\uba74 \uc548 \ub41c\ub2e4. \uad6c\uccb4\uc801\uc778 \uac83\uc774 \ucd94\uc0c1\ud654\ub41c \uac83\uc5d0 \uc758\uc874\ud574\uc57c \ud55c\ub2e4. <\/p>\n<\/blockquote>\n<p>Dependency \ub294 A \uac1d\uccb4\uac00 B \uac1d\uccb4\ub97c \uc0ac\uc6a9\ud558\ub294 \uad00\uacc4\uc785\ub2c8\ub2e4. \uc18d\uc131\uc73c\ub85c \ud3ec\ud568\ud558\ub294 \uac83\uc774 \uc544\ub2c8\ub77c, \uba54\uc18c\ub4dc\uc5d0\uc11c \uc0ac\uc6a9\ud569\ub2c8\ub2e4.<\/p>\n<p>\uc2a4\ub178\uc6b0\ud0c0\uc774\uc5b4\ub294 \ubc14\ub00c\uae30 \uc27d\uae30 \ub54c\ubb38\uc5d0 \ub9c9\ubc14\ub85c \uc758\uc874\ud558\uc9c0 \ub9d0\uace0, \ucd94\uc0c1\ud654\ub41c \uac1d\uccb4\uc5d0 \uc758\uc874\ud574\uc57c \uc548\uc804\ud569\ub2c8\ub2e4.<\/p>\n<p>\ubcc0\ud558\uae30 \uc26c\uc6b4 \uac1d\uccb4\uc5d0 \uc758\uc874\ud558\uc9c0 \ub9d0\uace0, \ubcc0\ud558\uae30 \uc5b4\ub824\uc6b4 \ucd94\uc0c1\ud074\ub798\uc2a4\ub098 \uc778\ud130\ud398\uc774\uc2a4\ub97c \uc774\uc6a9\ud558\ub3c4\ub85d \ud574\uc57c \ubcc0\ud654\uc5d0 \ub35c \ubbfc\uac10\ud574\uc9d1\ub2c8\ub2e4.<\/p>\n<pre><code class=\"language-java\">\/\/ without DIP\npublic class Car {\n    public void change(SnowTire tire) {\n        \/\/ ....\n    }\n}\n\n\/\/ with DIP\npublic class Car {\n    public void change(Tire tire) {\n        \/\/ ....\n    }\n}<\/code><\/pre>\n<h2>Interface Segregation Principle &#8211; ISP<\/h2>\n<blockquote>\n<p>\ud074\ub77c\uc774\uc5b8\ud2b8\ub294 \uc790\uc2e0\uc774 \uc0ac\uc6a9\ud558\uc9c0 \uc54a\ub294 \uba54\uc18c\ub4dc\uc5d0 \uc758\uc874 \uad00\uacc4\ub97c \ub9fa\uc73c\uba74 \uc548\ub41c\ub2e4. <\/p>\n<\/blockquote>\n<p>\uac70\ub300\ud55c \uac1d\uccb4\ub294 \uc2e4\uc81c\ub85c \uc0ac\uc6a9\ub418\ub294 \uc778\ud130\ud398\uc774\uc2a4\ub294 \uba87\uac1c \ub418\uc9c0\ub3c4 \uc54a\uc73c\uba74\uc11c \uc5ec\ub7ec \uacf3\uc5d0\uc11c \uc0ac\uc6a9\ub428\uc73c\ub85c \uc778\ud574 \ub73b\ud558\uc9c0 \uc54a\ub294 \uc601\ud5a5\uc744 \ubc1b\uae30 \uc26c\uc6cc\uc9d1\ub2c8\ub2e4.<\/p>\n<p>\uac00\ub2a5\ud558\uba74 \uac1d\uccb4\ub97c \ucabc\uac1c\uc5b4 \uc5ec\ub7ec\uac1c\ub85c \ub9cc\ub4e4\uace0 \uac1d\uccb4\uc758 \uc0ac\uc774\uc988\ub97c \uc904\uc5ec \uc758\ub3c4\ud558\uc9c0 \uc54a\uc740 \uc601\ud5a5\uc744 \ucd5c\uc18c\ud654\ud574\uc57c \ud569\ub2c8\ub2e4.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\uac1d\uccb4\uc9c0\ud5a5 \uc124\uacc4\uc758 5\uc6d0\uce59 S.O.L.I.D \uc798\ubabb\ub41c \ucf54\ub529\uc774\ub780? \ub192\uc740 \uacb0\ud569\ub3c4 \uc815\ubcf4(\ub370\uc774\ud0c0)\uac00 \uc678\ubd80\uc5d0 \ub178\ucd9c\ub418\uba74 \ub420\uc218\ub85d, \uc5ec\ub7ec \uac1d\uccb4\uc5d0\uc11c \uadf8 \uc815\ubcf4\ub97c \uc774\uc6a9\ud558\uac8c \ub418\uace0, \uc815\ubcf4\ub97c \ubcc0\uacbd\ud558\ub824 \ud560 \ub54c, \uadf8 \uc815\ubcf4\uc5d0 \uc758\uc874\ud558\ub294 \ubaa8\ub4e0 \uac1d\uccb4\ub97c \uac19\uc774 \uc218\uc815\ud574\uc57c \ud558\uae30\uc5d0, \uc218\uc815\uc774 \uc5b4\ub824\uc6cc\uc9d1\ub2c8\ub2e4.(\ucd94\uc0c1\ud654 \uc704\ubc18) \ub0ae\uc740 \uc751\uc9d1\ub3c4 \ud558\ub098\uc758 \uac1d\uccb4 \uc815\ubcf4\ubcc0\uacbd\uc774 \ub2e4\ub978 \uac1d\uccb4\uc5d0 \uc758\ud574 \uc774\ub8e8\uc5b4\uc9c0\uba74, \uc18c\uc2a4\ub97c \uc218\uc815\ud558\ub824 \ud560\ub54c \uc5b4\ub5a4 \uac1d\uccb4\uc5d0 \uc758\ud574 \uc815\ubcf4\ubcc0\uacbd\uc774 \uc774\ub8e8\uc5b4\uc9c0\ub294\uc9c0 \ucc3e\uc544\uc57c \ud558\uace0, \ucc3e\uc740 \uc18c\uc2a4\ub97c \uac19\uc774\u2026 <span class=\"read-more\"><a href=\"https:\/\/www.skyer9.pe.kr\/wordpress\/?p=884\">Read More &raquo;<\/a><\/span><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[8],"tags":[],"class_list":["post-884","post","type-post","status-publish","format-standard","hentry","category-java"],"_links":{"self":[{"href":"https:\/\/www.skyer9.pe.kr\/wordpress\/index.php?rest_route=\/wp\/v2\/posts\/884","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.skyer9.pe.kr\/wordpress\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.skyer9.pe.kr\/wordpress\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.skyer9.pe.kr\/wordpress\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.skyer9.pe.kr\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=884"}],"version-history":[{"count":5,"href":"https:\/\/www.skyer9.pe.kr\/wordpress\/index.php?rest_route=\/wp\/v2\/posts\/884\/revisions"}],"predecessor-version":[{"id":889,"href":"https:\/\/www.skyer9.pe.kr\/wordpress\/index.php?rest_route=\/wp\/v2\/posts\/884\/revisions\/889"}],"wp:attachment":[{"href":"https:\/\/www.skyer9.pe.kr\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=884"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.skyer9.pe.kr\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=884"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.skyer9.pe.kr\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=884"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}