{"id":10402,"date":"2020-10-10T17:37:44","date_gmt":"2020-10-10T08:37:44","guid":{"rendered":"http:\/\/www.gisdeveloper.co.kr\/?p=10402"},"modified":"2020-10-25T09:21:07","modified_gmt":"2020-10-25T00:21:07","slug":"bridge-%ed%8c%a8%ed%84%b4","status":"publish","type":"post","link":"http:\/\/www.gisdeveloper.co.kr\/?p=10402","title":{"rendered":"[GoF] Bridge \ud328\ud134"},"content":{"rendered":"<h4>\ud328\ud134\uba85\uce6d<\/h4>\n<p>Bridge<\/p>\n<h4>\ud544\uc694\ud55c \uc0c1\ud669<\/h4>\n<p>\uc5b4\ub5a4 \ucc98\ub9ac\uc5d0 \ub300\ud55c \ud070 \ub85c\uc9c1\uc744 \uc0c1\ud669\uc5d0 \ub530\ub77c \ub2e4\ub974\uac8c \uc815\uc758\ud574 \uc2e4\ud589\ud574\uc57c\ud55c\ub2e4. \uc774\uc640 \ub3d9\uc2dc\uc5d0 \ud574\ub2f9 \ub85c\uc9c1\uc744 \uad6c\uc131\ud558\ub294 \uc138\ubd80 \ud56d\ubaa9\uc5d0 \ub300\ud55c \ucc98\ub9ac\ub4e4 \uc5ed\uc2dc \ub2e4\ub974\uac8c \uc815\uc758\ud558\uace0\uc790\ud560\ub54c \uc0ac\uc6a9\ud560 \uc218 \uc788\ub294 \ud328\ud134\uc774\ub2e4. \uc989, \uad6c\ud604\uc758 \ucc28\uc6d0\uc774 2\uac1c \uc774\uc0c1\uc77c\ub54c \uc774\ub97c \ud6a8\uacfc\uc801\uc73c\ub85c \ubd84\ub9ac\ud560 \uc218 \uc788\ub294 \ud328\ud134\uc774\ub2e4.<\/p>\n<h4>\uc608\uc81c \ucf54\ub4dc <\/h4>\n<p><img decoding=\"async\" src=\"http:\/\/www.gisdeveloper.co.kr\/wp-content\/uploads\/2020\/10\/adapter.png\" alt=\"\" width=\"800\" class=\"aligncenter size-full wp-image-10403\" \/><\/p>\n<p>\uc704\uc758 \uc608\uc81c\ub294 Article \ud074\ub798\uc2a4\uc5d0 \uc815\uc758\ub41c \ub370\uc774\ud130\ub97c \ud654\uba74\uc5d0 \ucd9c\ub825\ud560\ub54c, \ucd9c\ub825\uc5d0 \ub300\ud55c \uad6c\ud604\uc744 Bridge \ud328\ud134\uc744 \uc774\uc6a9\ud574 \uad6c\ud604\ud558\ub3c4\ub85d \uc124\uacc4\ud55c \ud074\ub798\uc2a4\ub2e4\uc774\uc5b4\uadf8\ub7a8\uc774\ub2e4. \uba3c\uc800 Article \ud074\ub798\uc2a4\ub294 \ub2e4\uc74c\uacfc \uac19\ub2e4.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"java\">\r\npackage tstThread;\r\n\r\nimport java.util.ArrayList;\r\n\r\npublic class Article {\r\n    private String title;\r\n    private ArrayList&lt;String> content;\r\n    private String footer;\r\n    \r\n    public Article(String title, ArrayList&lt;String> content, String footer) {\r\n        this.title = title;\r\n        this.content = content;\r\n        this.footer = footer;\r\n    }\r\n    \r\n    public String getTitle() {\r\n        return title;\r\n    }\r\n    \r\n    public ArrayList&lt;String> getContent() {\r\n        return content;\r\n    }\r\n    \r\n    public String getFooter() {\r\n        return this.footer;\r\n    }\r\n}\r\n<\/pre>\n<p>\uc81c\ubaa9\uacfc \ub0b4\uc6a9 \uadf8\ub9ac\uace0 \uaf41\uc9c0\uae00\uc774 \uac01\uac01 title, content, footer \ud544\ub4dc\uc5d0 \uc800\uc7a5\ub41c\ub2e4. \uc774 \uc138\uac1c\ub97c \ucd9c\ub825\ud558\ub294 \ubc29\uc2dd\uc740 IDisplay \uc778\ud130\ud398\uc774\uc2a4\ub85c \uc815\uc758\ub418\uba70 \ub2e4\uc74c\uacfc \uac19\ub2e4.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"java\">\r\npackage tstThread;\r\n\r\npublic interface IDisplay {\r\n    void title(Article article);\r\n    void content(Article article);\r\n    void footer(Article article);\r\n}\r\n<\/pre>\n<p>\uc774 \uc778\ud130\ud398\uc774\uc2a4\ub97c \uad6c\ud604\ud558\ub294 \ud074\ub798\uc2a4\ub294 \ubaa8\ub450 3\uac1c\ub85c \uba3c\uc800 SimpleDisplay\ub294 \ub2e4\uc74c\uacfc \uac19\ub2e4.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"java\">\r\npackage tstThread;\r\n\r\nimport java.util.ArrayList;\r\n\r\npublic class SimpleDisplay implements IDisplay {\r\n\t@Override\r\n    public void title(Article article) {\r\n        System.out.println(article.getTitle());\r\n    }\r\n\r\n\t@Override\r\n    public void content(Article article) {\r\n        ArrayList&lt;String> content = article.getContent();\r\n        int cntLines = content.size();\r\n        for(int i=0; i&lt;cntLines; i++) {\r\n            System.out.println(content.get(i));\r\n        }\r\n    }\r\n\r\n\t@Override\r\n    public void footer(Article article) {\r\n        System.out.println(article.getFooter());\r\n    }\r\n}\r\n<\/pre>\n<p>ContentReverseDisplay \ud074\ub798\uc2a4\ub294 Article\uc758 content\ub97c \uad6c\uc131\ud558\ub294 \ubb38\uc790\uc5f4 \uc694\uc18c\ub97c \uc5ed\uc21c\uc73c\ub85c \ucd9c\ub825\ud558\uba70 \ub2e4\uc74c\uacfc \uac19\ub2e4.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"java\">\r\npackage tstThread;\r\n\r\nimport java.util.ArrayList;\r\n\r\npublic class ContentReverseDisplay extends SimpleDisplay {\r\n\t@Override\r\n    public void content(Article article) {\r\n        ArrayList&lt;String> content = article.getContent();\r\n        for(int i=content.size()-1; i>=0; i--) {\r\n            System.out.println(content.get(i));\r\n        }\r\n    }\r\n}\r\n<\/pre>\n<p>ContentVerticalDisplay \ud074\ub798\uc2a4\ub294 Article\uc758 content\ub97c \uc138\ub85c\ubc29\ud5a5\uc73c\ub85c \ucd9c\ub825\ud558\uba70 \ub2e4\uc74c\uacfc \uac19\ub2e4.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"java\">\r\npackage tstThread;\r\n\r\nimport java.util.ArrayList;\r\n\r\npublic class ContentVerticalDisplay extends SimpleDisplay {\r\n\t@Override\r\n    public void content(Article article) {\r\n\t\tArrayList&lt;String> content = article.getContent();\r\n\t\t\r\n\t\tint maxChars = 0;\r\n\t\tint cntLines = content.size();\r\n\t\t\r\n        for(int i=0; i&lt;cntLines; i++) {\r\n            int len = content.get(i).length();\r\n        \tif(len > maxChars) maxChars = len;\r\n        }\r\n        \r\n        for(int iCh=0; iCh&lt;maxChars; iCh++) {\r\n        \tfor(int iLine=0; iLine&lt;cntLines; iLine++) {\r\n        \t\tString line = content.get(iLine);\r\n        \t\tif(line.length() > iCh) {\r\n        \t\t\tSystem.out.print(line.charAt(iCh) + \" \");\r\n        \t\t} else {\r\n        \t\t\tSystem.out.print(\"  \");\r\n        \t\t}\r\n        \t}\r\n        \tSystem.out.println();\r\n        }\r\n    }\r\n}\r\n<\/pre>\n<p>IDisplay\ub97c \uad6c\ud604\ud558\ub294 SimpleDisplay, ContentReverseDisplay, ContentVerticalDisplay\ub294 Article\uc744 \uad6c\uc131\ud558\ub294 title, content, footer \ud544\ub4dc\ub97c \uac01\uac01 \uc5b4\ub5bb\uac8c \ucd9c\ub825\ud560\uc9c0\ub97c \uacb0\uc815\ud558\ub294 \uad6c\ud604\uc5d0 \ub300\ud55c \ucc28\uc6d0\uc774\ub2e4. \uc774\uc81c \uc774 IDisplay\ub97c \uc774\uc6a9\ud574 Article\uc744 \uc2e4\uc81c\ub85c \ud654\uba74\uc5d0 \ucd9c\ub825\ud558\ub294 \ud074\ub798\uc2a4\uc778 User\ub294 \ub2e4\uc74c\uacfc \uac19\ub2e4.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"java\">\r\npackage tstThread;\r\n\r\npublic class User {\r\n\tprotected Article article;\r\n\t\r\n\tpublic User(Article article) {\r\n\t\tthis.article = article;\r\n\t}\r\n\t\r\n\tpublic void print(IDisplay display) {\r\n\t\tdisplay.title(article);\r\n\t\tdisplay.content(article);\r\n\t\tdisplay.footer(article);\r\n\t}\r\n}\r\n<\/pre>\n<p>print \ub9e4\uc11c\ub4dc\ub97c \ud1b5\ud574 Article \uac1d\uccb4\ub97c IDisplay \uc778\ud130\ud398\uc774\uc2a4\ub97c \ud1b5\ud574 \ucd9c\ub825\ud558\uace0 \uc788\ub294\ub370, \ucd9c\ub825\ud558\ub294 \uc21c\uc11c\ub294 title, content, footer\uc774\ub2e4. \uadf8\ub7f0\ub370 \ub610 \ub2e4\ub978 \uc694\uad6c\uc0ac\ud56d\uc73c\ub85c footer, content, title\ub77c\ub294 \uc21c\uc11c\ub85c \ucd9c\ub825\ud558\ub294 \uae30\ub2a5\uc744 \ucc98\ub9ac\ud558\uae30 \uc704\ud574 User\ub97c \uc0c1\uc18d\ubc1b\uc544 ReverseUser \ud074\ub798\uc2a4\ub97c \uc815\uc758\ud558\uba70 \ub2e4\uc74c\uacfc \uac19\ub2e4.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"java\">\r\npackage tstThread;\r\n\r\npublic class ReverseUser extends User {\r\n\r\n\tpublic ReverseUser(Article article) {\r\n\t\tsuper(article);\r\n\t}\r\n\r\n\tpublic void print(IDisplay display) {\r\n\t\tdisplay.footer(article);\r\n\t\tdisplay.content(article);\r\n\t\tdisplay.title(article);\t\t\r\n\t}\r\n}\r\n<\/pre>\n<p>User\uc640 ReverseUser\ub294 Article\uc744 \uad6c\uc131\ud558\ub294 \uc694\uc18c\ub97c \uc5b4\ub5bb\uac8c \uc870\ub9bd\ud560\uc9c0\ub97c \uacb0\uc815\ud558\ub294 \uad6c\ud604\uc5d0 \ub300\ud55c \ucc28\uc6d0\uc774\ub2e4. \uc774\uc81c \uc9c0\uae08\uae4c\uc9c0 \uc815\uc758\ud55c \ud074\ub798\uc2a4\ub97c \uc0ac\uc6a9\ud558\ub294 \ucf54\ub4dc\ub294 \ub2e4\uc74c\uacfc \uac19\ub2e4.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"java\">\r\npackage tstThread;\r\n\r\nimport java.util.ArrayList;\r\n\r\npublic class Main {\r\n\tpublic static void main(String[] args) {\r\n\t\tString title = \"GIS, powerful tool\";\r\n        \r\n        ArrayList&lt;String> content = new ArrayList&lt;String>();\r\n        content.add(\"GIS is a geographic information system.\");\r\n        content.add(\"It is base on real spatial data.\");\r\n        content.add(\"It provides analyzing spatial data\");\r\n        \r\n        String footer = \"2020.10.08, written by Dip2K\";\r\n        \r\n        Article article = new Article(title, content, footer);\r\n        \r\n        System.out.println(\"[CASE-1]\");\r\n        User case1 = new User(article);\r\n        case1.print(new SimpleDisplay());\r\n        System.out.println();\r\n        \r\n        System.out.println(\"[CASE-2]\");\r\n        User case2 = new ReverseUser(article);\r\n        case2.print(new SimpleDisplay());\r\n        System.out.println();\r\n        \r\n        System.out.println(\"[CASE-3]\");\r\n        User case3 = new ReverseUser(article);\r\n        case3.print(new ContentReverseDisplay());\r\n        System.out.println();\r\n        \r\n        System.out.println(\"[CASE-4]\");\r\n        User case4 = new User(article);\r\n        case4.print(new ContentVerticalDisplay());\r\n        System.out.println();\r\n\t}\r\n}\r\n<\/pre>\n<p>\uc2e4\ud589 \uacb0\uacfc\ub294 \ub2e4\uc74c\uacfc \uac19\ub2e4.<\/p>\n<pre class='code'>\r\n[CASE-1]\r\nGIS, powerful tool\r\nGIS is a geographic information system.\r\nIt is base on real spatial data.\r\nIt provides analyzing spatial data\r\n2020.10.08, written by Dip2K\r\n\r\n[CASE-2]\r\n2020.10.08, written by Dip2K\r\nGIS is a geographic information system.\r\nIt is base on real spatial data.\r\nIt provides analyzing spatial data\r\nGIS, powerful tool\r\n\r\n[CASE-3]\r\n2020.10.08, written by Dip2K\r\nIt provides analyzing spatial data\r\nIt is base on real spatial data.\r\nGIS is a geographic information system.\r\nGIS, powerful tool\r\n\r\n[CASE-4]\r\n2020.10.08, written by Dip2K\r\nG I I \r\nI t t \r\nS     \r\n  i p \r\ni s r \r\ns   o \r\n  b v \r\na a i \r\n  s d \r\ng e e \r\ne   s \r\no o   \r\ng n a \r\nr   n \r\na r a \r\np e l \r\nh a y \r\ni l z \r\nc   i \r\n  s n \r\ni p g \r\nn a   \r\nf t s \r\no i p \r\nr a a \r\nm l t \r\na   i \r\nt d a \r\ni a l \r\no t   \r\nn a d \r\n  . a \r\ns   t \r\ny   a \r\ns     \r\nt     \r\ne     \r\nm     \r\n.     \r\nGIS, powerful tool\r\n<\/pre>\n<p>Bridge \ud328\ud134\uc744 \ud1b5\ud574 \ucc28\uc6d0\uc774 \ub2e4\ub978 \uad6c\ud604\uc744 \ubd84\ub9ac\ud568\uc73c\ub85c\uc368 \uad6c\ud604\uc744 \ud6a8\uacfc\uc801\uc73c\ub85c \ud560 \uc218 \uc788\uc73c\uba70, \uad6c\ud604\ub41c \uae30\ub2a5\uc744 \ub2e4\uc591\ud558\uac8c \uc870\ud569\ud560 \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 Bridge \ud544\uc694\ud55c \uc0c1\ud669 \uc5b4\ub5a4 \ucc98\ub9ac\uc5d0 \ub300\ud55c \ud070 \ub85c\uc9c1\uc744 \uc0c1\ud669\uc5d0 \ub530\ub77c \ub2e4\ub974\uac8c \uc815\uc758\ud574 \uc2e4\ud589\ud574\uc57c\ud55c\ub2e4. \uc774\uc640 \ub3d9\uc2dc\uc5d0 \ud574\ub2f9 \ub85c\uc9c1\uc744 \uad6c\uc131\ud558\ub294 \uc138\ubd80 \ud56d\ubaa9\uc5d0 \ub300\ud55c \ucc98\ub9ac\ub4e4 \uc5ed\uc2dc \ub2e4\ub974\uac8c \uc815\uc758\ud558\uace0\uc790\ud560\ub54c \uc0ac\uc6a9\ud560 \uc218 \uc788\ub294 \ud328\ud134\uc774\ub2e4. \uc989, \uad6c\ud604\uc758 \ucc28\uc6d0\uc774 2\uac1c \uc774\uc0c1\uc77c\ub54c \uc774\ub97c \ud6a8\uacfc\uc801\uc73c\ub85c \ubd84\ub9ac\ud560 \uc218 \uc788\ub294 \ud328\ud134\uc774\ub2e4. \uc608\uc81c \ucf54\ub4dc \uc704\uc758 \uc608\uc81c\ub294 Article \ud074\ub798\uc2a4\uc5d0 \uc815\uc758\ub41c \ub370\uc774\ud130\ub97c \ud654\uba74\uc5d0 \ucd9c\ub825\ud560\ub54c, \ucd9c\ub825\uc5d0 \ub300\ud55c \uad6c\ud604\uc744 Bridge &hellip; <\/p>\n<p class=\"link-more\"><a href=\"http:\/\/www.gisdeveloper.co.kr\/?p=10402\" class=\"more-link\">\ub354 \ubcf4\uae30<span class=\"screen-reader-text\"> &#8220;[GoF] Bridge \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-10402","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\/10402","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=10402"}],"version-history":[{"count":10,"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=\/wp\/v2\/posts\/10402\/revisions"}],"predecessor-version":[{"id":10568,"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=\/wp\/v2\/posts\/10402\/revisions\/10568"}],"wp:attachment":[{"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=10402"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=10402"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=10402"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}