{"id":297,"date":"2017-01-11T00:22:55","date_gmt":"2017-01-10T15:22:55","guid":{"rendered":"http:\/\/www.hundredapps.net\/?p=297"},"modified":"2017-11-10T09:51:14","modified_gmt":"2017-11-10T00:51:14","slug":"templatemethod%e3%83%91%e3%82%bf%e3%83%bc%e3%83%b3","status":"publish","type":"post","link":"https:\/\/www.hundredapps.net\/?p=297","title":{"rendered":"TemplateMethod\u30d1\u30bf\u30fc\u30f3"},"content":{"rendered":"<p>##TemplateMethod\u30d1\u30bf\u30fc\u30f3<br \/>\nTemplate Method \u30d1\u30bf\u30fc\u30f3\u306e\u76ee\u7684\u306f\u3001\u3042\u308b\u51e6\u7406\u306e\u304a\u304a\u307e\u304b\u306a\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u3092\u3042\u3089\u304b\u3058\u3081\u6c7a\u3081\u3066\u304a\u3044\u3066\u3001\u305d\u306e\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306e\u5177\u4f53\u7684\u306a\u8a2d\u8a08\u3092\u30b5\u30d6\u30af\u30e9\u30b9\u306b\u4efb\u305b\u308b\u3053\u3068\u3002\u305d\u306e\u305f\u3081\u3001\u30b7\u30b9\u30c6\u30e0\u306e\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u3092\u69cb\u7bc9\u3059\u308b\u305f\u3081\u306e\u624b\u6bb5\u3068\u3057\u3066\u3088\u304f\u6d3b\u7528\u3055\u308c\u308b\u3002<\/p>\n<p>\u53c2\u8003\u66f8\u7c4d <br \/>\n<a  href=\"https:\/\/www.amazon.co.jp\/gp\/product\/4621066056\/ref=as_li_qf_sp_asin_tl?ie=UTF8&#038;camp=247&#038;creative=1211&#038;creativeASIN=4621066056&#038;linkCode=as2&#038;tag=hundredapps05-22\">EFFECTIVE JAVA \u7b2c2\u7248 (The Java Series)<\/a><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/ir-jp.amazon-adsystem.com\/e\/ir?t=hundredapps05-22&#038;l=as2&#038;o=9&#038;a=4621066056\" width=\"1\" height=\"1\" border=\"0\" alt=\"\" style=\"border:none !important; margin:0px !important;\" \/><\/p>\n<a  href=\"https:\/\/www.amazon.co.jp\/gp\/product\/B00I8ATHGW\/ref=as_li_qf_sp_asin_tl?ie=UTF8&#038;camp=247&#038;creative=1211&#038;creativeASIN=B00I8ATHGW&#038;linkCode=as2&#038;tag=hundredapps05-22\">\u5897\u88dc\u6539\u8a02\u7248 Java\u8a00\u8a9e\u3067\u5b66\u3076\u30c7\u30b6\u30a4\u30f3\u30d1\u30bf\u30fc\u30f3\u5165\u9580<\/a><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/ir-jp.amazon-adsystem.com\/e\/ir?t=hundredapps05-22&#038;l=as2&#038;o=9&#038;a=B00I8ATHGW\" width=\"1\" height=\"1\" border=\"0\" alt=\"\" style=\"border:none !important; margin:0px !important;\" \/>\n<h2>help somebody understand<\/h2>\n<pre>\npackage TemplateMethod;\n\n\/**\n * Created by shu on 2017\/01\/09.\n *\/\n\ninterface Soldier {\n    String name();\n    int powerLevel();\n    String attackName();\n    String race();\n    void print();\n}\n\nabstract class Saiyan implements Soldier {\n    String mName;\n    int mPowerLevel;\n    String mAttackName;\n    String mRace;\n\n    Saiyan() {\n        mName = name();\n        mPowerLevel = powerLevel();\n        mAttackName = attackName();\n        mRace = race();\n    }\n    abstract public String name(); \/\/ \u540d\u524d\n    abstract public int powerLevel();\/\/ \u6226\u95d8\u529b\n    abstract public String attackName(); \/\/ \u6280\u540d\n    public String race() {\n        return \"\u30b5\u30a4\u30e4\u4eba\";\n    }\n    public void print() {\n        StringBuilder strBuilder = new StringBuilder();\n        strBuilder.append(\"##################\\n\");\n        strBuilder.append(mName + \"\\n\");\n        strBuilder.append(\"\u6226\u95d8\u529b:\" + mPowerLevel + \"\\n\");\n        strBuilder.append(\"\u6280:\" + mAttackName + \"\\n\");\n        strBuilder.append(\"\u51fa\u8eab:\" + mRace + \"\\n\");\n        strBuilder.append(\"##################\\n\");\n        System.out.println(strBuilder.toString());\n    }\n}\n\nabstract class Earth implements Soldier {\n    String mName;\n    int mPowerLevel;\n    String mAttackName;\n    String mRace;\n\n    Earth() {\n        mName = name();\n        mPowerLevel = powerLevel();\n        mAttackName = attackName();\n        mRace = race();\n    }\n    abstract public String name();\n    abstract public int powerLevel();\/\/ \u6226\u95d8\u529b\n    abstract public String attackName(); \/\/ \u6280\u540d\n    public String race() {\n        return \"\u5730\u7403\u4eba\";\n    }\n    public void print() {\n        StringBuilder strBuilder = new StringBuilder();\n        strBuilder.append(\"##################\\n\");\n        strBuilder.append(mName + \"\\n\");\n        strBuilder.append(\"\u6226\u95d8\u529b:\" + mPowerLevel + \"\\n\");\n        strBuilder.append(\"\u6280:\" + mAttackName + \"\\n\");\n        strBuilder.append(\"\u51fa\u8eab:\" + mRace + \"\\n\");\n        strBuilder.append(\"##################\\n\");\n        System.out.println(strBuilder.toString());\n    }\n}\n\n\nclass SonGoku extends Saiyan {\n    @Override\n    public String name() {\n        return \"\u5b6b\u609f\u7a7a\";\n    }\n    @Override\n    public int powerLevel() {\n        return 10000;\n    }\n\n    @Override\n    public String attackName() {\n        return \"\u304b\u3081\u306f\u3081\u6ce2\";\n    }\n}\nclass Krillin extends Earth {\n    @Override\n    public String name() {\n        return \"\u30af\u30ea\u30ea\u30f3\";\n    }\n    @Override\n    public int powerLevel() {\n        return 1000;\n    }\n\n    @Override\n    public String attackName() {\n        return \"\u6c17\u5186\u65ac\";\n    }\n}\n\nclass SoldierProfile {\n    public static void main(String[] arg){\n        SonGoku sonGoku = new SonGoku();\n        sonGoku.print();\n\n        Krillin krillin = new Krillin();\n        krillin.print();\n    }\n}\n\n<\/pre>\n<div style=\"float:left; margin: 10px;\">\n<iframe src=\"https:\/\/rcm-fe.amazon-adsystem.com\/e\/cm?t=hundredapps05-22&#038;o=9&#038;p=8&#038;l=as1&#038;asins=4621066056&#038;ref=qf_sp_asin_til&#038;fc1=000000&#038;IS2=1&#038;lt1=_blank&#038;m=amazon&#038;lc1=0000FF&#038;bc1=000000&#038;bg1=FFFFFF&#038;f=ifr\" style=\"width:120px;height:240px;\" scrolling=\"no\" marginwidth=\"0\" marginheight=\"0\" frameborder=\"0\"><\/iframe>\n<\/div>\n<div style=\"float:left; margin: 10px;\">\n<iframe src=\"https:\/\/rcm-fe.amazon-adsystem.com\/e\/cm?t=hundredapps05-22&#038;o=9&#038;p=8&#038;l=as1&#038;asins=B00I8ATHGW&#038;ref=qf_sp_asin_til&#038;fc1=000000&#038;IS2=1&#038;lt1=_blank&#038;m=amazon&#038;lc1=0000FF&#038;bc1=000000&#038;bg1=FFFFFF&#038;f=ifr\" style=\"width:120px;height:240px;\" scrolling=\"no\" marginwidth=\"0\" marginheight=\"0\" frameborder=\"0\"><\/iframe>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>##TemplateMethod\u30d1\u30bf\u30fc\u30f3 Template Method \u30d1\u30bf\u30fc\u30f3\u306e\u76ee\u7684\u306f\u3001\u3042\u308b\u51e6\u7406\u306e\u304a\u304a\u307e\u304b&#8230;<\/p>\n","protected":false},"author":1,"featured_media":296,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[12,11],"tags":[],"class_list":["post-297","post","type-post","status-publish","format-standard","has-post-thumbnail","category-designpattern","category-java","article cf"],"_links":{"self":[{"href":"https:\/\/www.hundredapps.net\/index.php?rest_route=\/wp\/v2\/posts\/297","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.hundredapps.net\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.hundredapps.net\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.hundredapps.net\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.hundredapps.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=297"}],"version-history":[{"count":1,"href":"https:\/\/www.hundredapps.net\/index.php?rest_route=\/wp\/v2\/posts\/297\/revisions"}],"predecessor-version":[{"id":298,"href":"https:\/\/www.hundredapps.net\/index.php?rest_route=\/wp\/v2\/posts\/297\/revisions\/298"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.hundredapps.net\/index.php?rest_route=\/wp\/v2\/media\/296"}],"wp:attachment":[{"href":"https:\/\/www.hundredapps.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=297"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.hundredapps.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=297"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.hundredapps.net\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=297"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}