{"id":10487,"date":"2020-10-16T09:19:44","date_gmt":"2020-10-16T00:19:44","guid":{"rendered":"http:\/\/www.gisdeveloper.co.kr\/?p=10487"},"modified":"2022-01-28T13:53:27","modified_gmt":"2022-01-28T04:53:27","slug":"facade-%ed%8c%a8%ed%84%b4","status":"publish","type":"post","link":"http:\/\/www.gisdeveloper.co.kr\/?p=10487","title":{"rendered":"[GoF] Facade \ud328\ud134"},"content":{"rendered":"<h4>\ud328\ud134\uba85\uce6d<\/h4>\n<p>Facade<\/p>\n<h4>\ud544\uc694\ud55c \uc0c1\ud669 <\/h4>\n<p>\uc5b4\ub5a4 \uae30\ub2a5\uc744 \uc2e4\ud589\ud560\ub54c \ub2e4\uc591\ud55c \ud0c0\uc785\uc758 \uac1d\uccb4\ub4e4\uc758 \ud568\uc218\ub97c \uc815\ud655\ud55c \uc21c\uc11c\ub85c \ud638\ucd9c\ud574\uc57c \ud560\ub54c \ubc1c\uc0dd\ud558\ub294 \ubcf5\uc7a1\ub3c4\ub97c \ub2e8\uc21c\ud654\uc2dc\ucf1c\uc8fc\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\/facade.png\" alt=\"\" width=\"912\" height=\"684\" class=\"aligncenter size-full wp-image-10488\" \/><\/p>\n<p>\ub370\uc774\ud130\ubca0\uc774\uc2a4\ubd80\ud130 \uc0ac\uc6a9\uc790\uc758 \uc815\ubcf4\ub97c \uac00\uc838\uc624\uae30 \uc804\uc5d0 \uba3c\uc800 \uce90\uc26c\ub97c \ud1b5\ud574 \uc815\ubcf4\ub97c \uac00\uc838\uc624\uace0, \ub9cc\uc57d \uce90\uc26c\uc5d0 \uc5c6\ub2e4\uba74 \ub370\uc774\ud130\ubca0\uc774\uc2a4\ub85c\ubd80\ud130 \uc0ac\uc6a9\uc790 \uc815\ubcf4\ub97c \uac00\uc838\uc640 \uce90\uc26c\uc5d0 \uc800\uc7a5\ud55c\ub2e4. \uadf8 \ub2e4\uc74c\uc740 \uc774 \uc815\ubcf4\ub97c \uc6d0\ud558\ub294 \ud615\ud0dc\uc758 \uba54\uc138\uc9c0\ub85c \ucd9c\ub825\ud558\uae30 \uc704\ud55c \uae30\ub2a5\uc744 \uac1c\ubc1c\ud55c\ub2e4\uace0 \ud558\uc790. \uc774 \uae30\ub2a5\uc5d0 \ub300\ud574\uc11c \uc0ac\uc6a9\uc790 \uc815\ubcf4\ub294 Row \ud074\ub798\uc2a4, \ub370\uc774\ud130\ubca0\uc774\uc2a4\ub294 DBMS \ud074\ub798\uc2a4, \uce90\uc26c\ub294 Cache \ud074\ub798\uc2a4, \uba54\uc138\uc9c0 \ucd9c\ub825\uc744 \uc704\ud55c \ub0b4\uc6a9\uc758 \uad6c\uc131\uc740 Message \ud074\ub798\uc2a4\uac00 \ub2f4\ub2f9\ud55c\ub2e4. \uc774\ub7ec\ud55c \ud074\ub798\uc2a4\ub4e4 \uac04\uc758 \uc815\ud655\ud55c \uad00\uacc4\uc640 \ub9e4\uc11c\ub4dc\ub4e4\uac04\uc758 \ubcf5\uc7a1\ud55c \uad00\uacc4\ub97c Facade \ud074\ub798\uc2a4\ub97c \ub3c4\uc785\ud558\uc5ec \ub2e8\uc21c\ud654 \uc2dc\ud0a8\ub2e4. \uba3c\uc800 \uc0ac\uc6a9\uc790 \uc815\ubcf4\ub294 Row\ub294 \ub2e4\uc74c\uacfc \uac19\ub2e4.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"java\">\r\npackage pattern;\r\n\r\npublic class Row {\r\n\tprivate String name;\r\n\tprivate String birthday;\r\n\tprivate String email;\r\n\t\r\n\tpublic Row(String name, String birthday, String email) {\r\n\t\tthis.name = name;\r\n\t\tthis.birthday = birthday;\r\n\t\tthis.email = email;\r\n\t}\r\n\t\r\n\tpublic String getName() {\r\n\t\treturn name;\r\n\t}\r\n\t\r\n\tpublic String getBirthday() {\r\n\t\treturn birthday;\r\n\t}\r\n\t\r\n\tpublic String getEmail() {\r\n\t\treturn email;\r\n\t}\r\n}\r\n<\/pre>\n<p>DBMS \ud074\ub798\uc2a4\ub294 \ub2e4\uc74c\uacfc \uac19\ub2e4.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"java\">\r\npackage pattern;\r\n\r\nimport java.util.HashMap;\r\n\r\npublic class DBMS {\r\n\tprivate HashMap&lt;String, Row> db;\r\n\t\r\n\tpublic DBMS() {\r\n\t\tdb = new HashMap&lt;String, Row>();\r\n\t\t\r\n\t\tdb.put(\"jane\", new Row(\"Jane\", \"1990-02-14\", \"jane09@geosee.co.kr\"));\r\n\t\tdb.put(\"robert\", new Row(\"Robert\", \"1979-11-05\", \"nice@googl.com\"));\r\n\t\tdb.put(\"dorosh\", new Row(\"Dorosh\", \"1985-08-21\", \"doshdo@nave.net\"));\r\n\t}\r\n\t\r\n\tpublic Row query(String name) {\r\n\t\ttry {\r\n\t\t\tThread.sleep(2000);\r\n\t\t} catch (InterruptedException e) {\r\n\t\t\te.printStackTrace();\r\n\t\t}\r\n\t\t\r\n\t\treturn db.get(name.toLowerCase());\r\n\t}\r\n}\r\n<\/pre>\n<p>Cache \ud074\ub798\uc2a4\ub294 \ub2e4\uc74c\uacfc \uac19\ub2e4.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"java\">\r\npackage pattern;\r\n\r\nimport java.util.HashMap;\r\n\r\npublic class Cache {\r\n    private HashMap&lt;String, Row> cache;\r\n    \r\n    public Cache() {\r\n        cache = new HashMap&lt;String, Row>();\r\n    }\r\n    \r\n    public void put(Row row) {\r\n        cache.put(row.getName(), row);\r\n    }\r\n\r\n    public Row get(String name) {\r\n        return cache.get(name);\r\n    }\r\n}\r\n<\/pre>\n<p>Message \ud074\ub798\uc2a4\ub294 \ub2e4\uc74c\uacfc \uac19\ub2e4.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"java\">\r\npackage pattern;\r\n\r\npublic class Message {\r\n\tprivate Row row;\r\n\t\r\n\tpublic Message(Row row) {\r\n\t\tthis.row = row;\r\n\t}\r\n\t\r\n\tpublic String makeName() {\r\n\t\treturn \"Name: \\\"\" + row.getName() + \"\\\"\";\r\n\t}\r\n\t\r\n\tpublic String makeBirthday() {\r\n\t\treturn \"Birthday: \" + row.getBirthday();\r\n\t}\r\n\t\r\n\tpublic String makeEmail() {\r\n\t\treturn \"Email: \" + row.getEmail();\r\n\t}\r\n}\r\n<\/pre>\n<p>\uc774\uc81c \uc704\uc758 \ud074\ub798\uc2a4\ub4e4\uc5d0 \ub300\ud55c \uc0c1\ud638\uac04\uc758 API \ud638\ucd9c\uc744 \ub2e8\uc21c\ud654\uc2dc\ud0a8 Facade \ud074\ub798\uc2a4\ub294 \ub2e4\uc74c\uacfc \uac19\ub2e4.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"java\">\r\npackage pattern;\r\n\r\npublic class Facade {\r\n\tpublic void run(DBMS dbms, Cache cache, String name) {\r\n\t\tRow row = cache.get(name);\r\n\t\tif(row == null) {\r\n\t\t\trow = dbms.query(name);\r\n\t\t\tif(row != null) {\r\n\t\t\t\tcache.put(row);\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\tif(row != null) {\r\n\t\t\tMessage message = new Message(row);\r\n\t\t\tSystem.out.println(message.makeName());\r\n\t\t\tSystem.out.println(message.makeBirthday());\r\n\t\t\tSystem.out.println(message.makeEmail());\r\n\t\t} else {\r\n\t\t\tSystem.out.println(name + \" is not exists.\");\r\n\t\t}\r\n\t}\r\n}\r\n<\/pre>\n<p>\uc2e4\uc81c \uc0ac\uc6a9 \uc608\uc81c \ucf54\ub4dc\ub294 \ub2e4\uc74c\uacfc \uac19\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\tDBMS dbms = new DBMS();\r\n\t\tCache cache = new Cache();\r\n\t\t\r\n\t\tString name = \"Dorosh\";\r\n\t\t\r\n\t\tFacade facade = new Facade();\r\n\t\tfacade.run(dbms, cache, name);\r\n\t}\r\n}\r\n<\/pre>\n<p>\uc2e4\ud589 \uacb0\uacfc\ub294 \ub2e4\uc74c\uacfc \uac19\ub2e4.<\/p>\n<pre code='code'>\r\nName: \"Dorosh\"\r\nBirthday: 1985-08-21\r\nEmail: doshdo@nave.net\r\n<\/pre>\n<p>Facade \ud328\ud134\uc758 \ub3c4\uc785\uc73c\ub85c \ubcf5\uc7a1\ud55c \ud074\ub798\uc2a4\uac04\uc758 \ud568\uc218 \ud638\ucd9c\uc774 \ub2e8\uc21c\ud654\ub418\uace0 \uc7ac\uc0ac\uc6a9\uc131\uc774 \ub192\uc544\uc9c4\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 Facade \ud544\uc694\ud55c \uc0c1\ud669 \uc5b4\ub5a4 \uae30\ub2a5\uc744 \uc2e4\ud589\ud560\ub54c \ub2e4\uc591\ud55c \ud0c0\uc785\uc758 \uac1d\uccb4\ub4e4\uc758 \ud568\uc218\ub97c \uc815\ud655\ud55c \uc21c\uc11c\ub85c \ud638\ucd9c\ud574\uc57c \ud560\ub54c \ubc1c\uc0dd\ud558\ub294 \ubcf5\uc7a1\ub3c4\ub97c \ub2e8\uc21c\ud654\uc2dc\ucf1c\uc8fc\ub294 \ud328\ud134\uc774\ub2e4. \uc608\uc81c \ucf54\ub4dc \ub370\uc774\ud130\ubca0\uc774\uc2a4\ubd80\ud130 \uc0ac\uc6a9\uc790\uc758 \uc815\ubcf4\ub97c \uac00\uc838\uc624\uae30 \uc804\uc5d0 \uba3c\uc800 \uce90\uc26c\ub97c \ud1b5\ud574 \uc815\ubcf4\ub97c \uac00\uc838\uc624\uace0, \ub9cc\uc57d \uce90\uc26c\uc5d0 \uc5c6\ub2e4\uba74 \ub370\uc774\ud130\ubca0\uc774\uc2a4\ub85c\ubd80\ud130 \uc0ac\uc6a9\uc790 \uc815\ubcf4\ub97c \uac00\uc838\uc640 \uce90\uc26c\uc5d0 \uc800\uc7a5\ud55c\ub2e4. \uadf8 \ub2e4\uc74c\uc740 \uc774 \uc815\ubcf4\ub97c \uc6d0\ud558\ub294 \ud615\ud0dc\uc758 \uba54\uc138\uc9c0\ub85c \ucd9c\ub825\ud558\uae30 \uc704\ud55c \uae30\ub2a5\uc744 \uac1c\ubc1c\ud55c\ub2e4\uace0 \ud558\uc790. \uc774 \uae30\ub2a5\uc5d0 \ub300\ud574\uc11c &hellip; <\/p>\n<p class=\"link-more\"><a href=\"http:\/\/www.gisdeveloper.co.kr\/?p=10487\" class=\"more-link\">\ub354 \ubcf4\uae30<span class=\"screen-reader-text\"> &#8220;[GoF] Facade \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-10487","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\/10487","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=10487"}],"version-history":[{"count":7,"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=\/wp\/v2\/posts\/10487\/revisions"}],"predecessor-version":[{"id":10493,"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=\/wp\/v2\/posts\/10487\/revisions\/10493"}],"wp:attachment":[{"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=10487"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=10487"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=10487"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}