{"id":10382,"date":"2020-10-07T11:12:23","date_gmt":"2020-10-07T02:12:23","guid":{"rendered":"http:\/\/www.gisdeveloper.co.kr\/?p=10382"},"modified":"2020-10-25T09:21:24","modified_gmt":"2020-10-25T00:21:24","slug":"strategy-%ed%8c%a8%ed%84%b4","status":"publish","type":"post","link":"http:\/\/www.gisdeveloper.co.kr\/?p=10382","title":{"rendered":"[GoF] Strategy \ud328\ud134"},"content":{"rendered":"<h4>\ud328\ud134\uba85\uce6d<\/h4>\n<p>Strategy<\/p>\n<h4>\ud544\uc694\ud55c \uc0c1\ud669 <\/h4>\n<p>\ubcc0\uacbd\ub420 \uac00\ub2a5\uc131\uc774 \ub192\uc740 \uc5b4\ub5a4 \uc54c\uace0\ub9ac\uc998\uc744 \uc27d\uace0 \ud6a8\uacfc\uc801\uc73c\ub85c \uad50\uccb4\ud560 \uc218 \uc788\ub3c4\ub85d \ud558\ub294 \ud328\ud134\uc774\ub2e4.<\/p>\n<h4>\uc608\uc81c \ucf54\ub4dc <\/h4>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.gisdeveloper.co.kr\/wp-content\/uploads\/2020\/10\/strategy.png\" alt=\"\" width=\"802\" height=\"353\" class=\"aligncenter size-full wp-image-10383\" \/><\/p>\n<p>\uc608\uc2dc\ub97c \uc704\ud574 \uc774 \uae00\uc5d0\uc11c\ub294 \ubcc0\uacbd\ub420 \uac00\ub2a5\uc131\uc774 \ub192\uc740 \uc54c\uace0\ub9ac\uc998\uc744 1\ubd80\ud130 N\uae4c\uc9c0\uc758 \ud569\uacc4\ub97c \uad6c\ud558\ub294 \uac83\uc73c\ub85c \ud55c\ub2e4. \uc704\uc758 \ud074\ub798\uc2a4 \ub2e4\uc774\uc5b4\uadf8\ub7a8\uc5d0\uc11c NSumStrategy\ub294 \uc774 \uc54c\uace0\ub9ac\uc998\uc758 \uc5f0\uc0b0 \uacb0\uacfc\ub97c \uc5bb\uae30 \uc704\ud55c \uc778\ud130\ud398\uc774\uc2a4\ub9cc\uc744 \uc815\uc758\ud558\ub294 \uc778\ud130\ud398\uc774\uc2a4\uc774\uba70 Strategy \ud328\ud134\uc758 \ud575\uc2ec\uc774\ub2e4. \ucf54\ub4dc\ub294 \uc544\ub798\uc640 \uac19\ub2e4.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"java\">\r\npackage pattern;\r\n\r\npublic interface NSumStrategy {\r\n\tlong sum(long N);\r\n}\r\n<\/pre>\n<p>Calculator \ud074\ub798\uc2a4\ub294 \uc5b4\ub5a4 \ubcf5\uc7a1\ud55c \uc5f0\uc0b0\uc744 \uc218\ud589\ud558\ub294 \uae30\ub2a5\uc744 \ud558\ub294\ub370, \ubcf5\uc7a1\ud55c \uc5f0\uc0b0 \uc18d\uc5d0 1\ubd80\ud130 N\uae4c\uc9c0 \ud569\uacc4\ub97c \ub0b4\ub294 \uc5f0\uc0b0\uc774 \ud544\uc694\ud558\ub2e4. \ucf54\ub4dc\ub294 \uc544\ub798\uc640 \uac19\ub2e4.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"java\">\r\npackage pattern;\r\n\r\npublic class Calculator {\r\n\tprivate NSumStrategy strategy;\r\n\t\r\n\tpublic Calculator(NSumStrategy strategy) {\r\n\t\tthis.strategy = strategy;\r\n\t}\r\n\t\r\n\tpublic double run(int N) {\r\n\t\treturn Math.log(strategy.sum(N));\t\r\n\t}\r\n}\r\n<\/pre>\n<p>\uc774\uc81c 1\ubd80\ud130 N\uae4c\uc9c0 \ud569\uacc4\ub97c \ub0b4\ub294 \uc5f0\uc0b0\uc5d0 \ub300\ud55c \uad6c\uccb4\uc801\uc778 \ud074\ub798\uc2a4\ub97c \uc815\uc758\ud574\ubcf4\uc790. \uba3c\uc800 SimpleSumStrategy \ud074\ub798\uc2a4\ub294 \ub2e4\uc74c\uacfc \uac19\ub2e4. \uac00\uc7a5 \ud754\ud558\uac8c \uc0ac\uc6a9\ub418\uba70 \ub9e4\uc6b0 \uc9c1\uad00\uc801\uc778 \ucf54\ub4dc\uc774\uc9c0\ub9cc, \ubc18\ubcf5\ubb38\uc744 \uc0ac\uc6a9\ud568\uc73c\ub85c\uc368 \uc218\ud589\uc18d\ub3c4\ub294 \ub290\ub9b0 \ubc29\ubc95\uc774\ub2e4.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"java\">\r\npackage pattern;\r\n\r\npublic class SimpleNSumStrategy implements NSumStrategy {\r\n\t@Override\r\n\tpublic long sum(long N) {\r\n\t\tlong sum = N;\r\n\t\t\r\n\t\tfor(long i=1; i&lt;N; i++) {\r\n\t\t\tsum += i;\r\n\t\t}\r\n\t\t\r\n\t\treturn sum;\r\n\t}\r\n}\r\n<\/pre>\n<p>\ub2e4\uc74c\uc740 \uac00\uc6b0\uc2a4 \ubc29\uc2dd\uc744 \uc0ac\uc6a9\ud558\ub294 GaussSumStrategy \ud074\ub798\uc2a4\uc774\ub2e4. \ubc18\ubcf5\ubb38\uc744 \uc0ac\uc6a9\ud558\uc9c0 \uc54a\uc544 \ub9e4\uc6b0 \uc18d\ub3c4\uac00 \ube60\ub974\ub2e4.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"java\">\r\npackage pattern;\r\n\r\npublic class GaussSumStrategy implements NSumStrategy {\r\n\t@Override\r\n\tpublic long sum(long N) {\r\n\t\treturn (N+1)*N\/2;\r\n\t}\r\n}\r\n<\/pre>\n<p>\uc544\ub798\ub294 \uc2e4\uc81c 1\ubd80\ud130 N\uae4c\uc9c0\uc758 \ud569\uc744 \ud544\uc694\ub85c \ud558\ub294 \ubcf5\uc7a1\ud55c \uc5f0\uc0b0\uc744 \uc2e4\uc81c\ub85c \uc218\ud589\ud558\ub294 \ucf54\ub4dc\uc774\ub2e4.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"java\">\r\npackage pattern;\r\n\r\npublic class Main {\r\n\tpublic static void main(String[] args) {\r\n\t\tCalculator cal1 = new Calculator(new SimpleNSumStrategy()); \r\n\t\tCalculator cal2 = new Calculator(new GaussSumStrategy());\r\n\t\t\r\n\t\tdouble result1 = cal1.run(10000000);\r\n\t\tdouble result2 = cal2.run(10000000);\r\n\t\t\r\n\t\tSystem.out.println(result1 + \" \" + result2);\r\n\t\t\r\n\t}\r\n}\r\n<\/pre>\n<p>\ubcf5\uc7a1\ud55c \uc5f0\uc0b0 \uc911 \uc77c\ubd80\ubd84\uc778 1\ubd80\ud130 N\uae4c\uc9c0\uc758 \ud569\uc744 \uad6c\ud558\ub294 \ubc29\uc2dd\uc744 \ubd84\ub9ac\ud558\uc5ec \uc27d\uac8c \uad50\uccb4\uac00 \uac00\ub2a5\ud55c \uac83\uc744 \ubcfc \uc218 \uc788\ub2e4.<\/p>\n<div style='background:#efefef;border-radius:8px;padding:12px 24px'>\uc774 \uae00\uc740 \uc18c\ud504\ud2b8\uc6e8\uc5b4 \uc124\uacc4\uc758 \uae30\ubc18\uc774 \ub418\ub294 GoF\uc758 \ub514\uc790\uc778\ud328\ud134\uc5d0 \ub300\ud55c \uac15\uc758\uc790\ub8cc\uc785\ub2c8\ub2e4. \uc644\uc804\ud55c \uc2e4\uc2b5\uc744 \uc704\ud574 \uc774 \uae00\uc5d0\uc11c \uc18c\uac1c\ud558\ub294 \ud074\ub798\uc2a4 \ub2e4\uc774\uc5b4\uadf8\ub7a8\uacfc \uc608\uc81c \ucf54\ub4dc\ub294 \uc644\uc804\ud558\uac8c \uc2e4\ud589\ub418\ub3c4\ub85d \uc81c\uacf5\ub418\uc9c0\ub9cc, \uc0c1\ub300\uc801\uc73c\ub85c \uc608\uc81c \ucf54\ub4dc\uc640 \uad00\ub828\ub41c \uc124\uba85\uc774 \ud568\ucd95\uc801\uc73c\ub85c \uc81c\uacf5\ub418\uace0 \uc788\uc2b5\ub2c8\ub2e4. \uc774 \uae00\uc5d0 \ub300\ud574 \uad81\uae08\ud55c \uc810\uc774 \uc788\uc73c\uba74 \ub313\uae00\uc744 \ud1b5\ud574 \ub0a8\uaca8\uc8fc\uc2dc\uae30 \ubc14\ub78d\ub2c8\ub2e4.<\/div>\n","protected":false},"excerpt":{"rendered":"<p>\ud328\ud134\uba85\uce6d Strategy \ud544\uc694\ud55c \uc0c1\ud669 \ubcc0\uacbd\ub420 \uac00\ub2a5\uc131\uc774 \ub192\uc740 \uc5b4\ub5a4 \uc54c\uace0\ub9ac\uc998\uc744 \uc27d\uace0 \ud6a8\uacfc\uc801\uc73c\ub85c \uad50\uccb4\ud560 \uc218 \uc788\ub3c4\ub85d \ud558\ub294 \ud328\ud134\uc774\ub2e4. \uc608\uc81c \ucf54\ub4dc \uc608\uc2dc\ub97c \uc704\ud574 \uc774 \uae00\uc5d0\uc11c\ub294 \ubcc0\uacbd\ub420 \uac00\ub2a5\uc131\uc774 \ub192\uc740 \uc54c\uace0\ub9ac\uc998\uc744 1\ubd80\ud130 N\uae4c\uc9c0\uc758 \ud569\uacc4\ub97c \uad6c\ud558\ub294 \uac83\uc73c\ub85c \ud55c\ub2e4. \uc704\uc758 \ud074\ub798\uc2a4 \ub2e4\uc774\uc5b4\uadf8\ub7a8\uc5d0\uc11c NSumStrategy\ub294 \uc774 \uc54c\uace0\ub9ac\uc998\uc758 \uc5f0\uc0b0 \uacb0\uacfc\ub97c \uc5bb\uae30 \uc704\ud55c \uc778\ud130\ud398\uc774\uc2a4\ub9cc\uc744 \uc815\uc758\ud558\ub294 \uc778\ud130\ud398\uc774\uc2a4\uc774\uba70 Strategy \ud328\ud134\uc758 \ud575\uc2ec\uc774\ub2e4. \ucf54\ub4dc\ub294 \uc544\ub798\uc640 \uac19\ub2e4. package pattern; public interface &hellip; <\/p>\n<p class=\"link-more\"><a href=\"http:\/\/www.gisdeveloper.co.kr\/?p=10382\" class=\"more-link\">\ub354 \ubcf4\uae30<span class=\"screen-reader-text\"> &#8220;[GoF] Strategy \ud328\ud134&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[13],"tags":[],"class_list":["post-10382","post","type-post","status-publish","format-standard","hentry","category-design"],"_links":{"self":[{"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=\/wp\/v2\/posts\/10382","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=10382"}],"version-history":[{"count":7,"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=\/wp\/v2\/posts\/10382\/revisions"}],"predecessor-version":[{"id":10571,"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=\/wp\/v2\/posts\/10382\/revisions\/10571"}],"wp:attachment":[{"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=10382"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=10382"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=10382"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}