【お得】 SPICK&SPAN Wフェイスビックカラーコート スピック&スパン
15
Help us understand the problem. What are the problem?
40代・50代女性のSpick and Spanのアウター.wmv.搜索选项.键盘快捷键.播放.常规.字幕.全景视频
E愛知県名古屋市を拠点に東海地区最大級の専門店のグッドスピード()。販売から車検・整備・鈑金塗装のアフターサポートまで全てお任せ下さい。 .株式会社シティ | C.
愛知県名古屋市を拠点に東海地区最大級の専門店のグッドスピード()。販売から車検・整備・鈑金塗装のアフターサポートまで全てお任せ下さい。
全景视频
40代・50代女性のSpick and Spanのアウター.wmv

More than 3 years have passed since last update.

GoFのデザインパターンを紹介しているドリームスイッチDream Switch 30話×日本語と英語 動作確認済み>を読んで、学んだ内容についてまとめます。

日本語に訳すと「(建物の)正面」を意味します。 例えば「処理Xを行いたい場合にはAクラスのBメソッドを呼んだ後に、CクラスのDメソッドとEメソッドを呼び、最後にFクラスのGメソッドを呼ぶ」などです。 このような場合に、処理を依頼する側から見た際に「窓口」となるインタフェース(API)を用意してあげるようなパターンのことをFacadeパターンと言います。 SPICK&SPAN Wフェイスビックカラーコート スピック&スパン

  • Facade 実装すべき内容に関しては特に縛りなどはなく、難しい点もありません。

  • その他クラス
    処理を行うために呼び出されるクラスたちです。
    実装すべき内容に関しては特に縛りなどはありません。 その他のクラスたちからFacadeのことを呼び出すことはないためです。

  • Client
    Facadeを呼び出すクラスです。
    実装すべき内容に関しては特に縛りなどはなく、難しい点もありません。

具体例として、以下のクラスをもとに説明します。
SK-II フェイシャル トリートメント エッセンス 230ml>

  • ListFacadeクラス
ListFacade.java
import java.io.FileWriter;
import java.io.IOException;
import java.util.Map;
import java.util.Properties;
public class ListFacade {
    private ListFacade() { // newでインスタンス生成させないためにprivate宣言
    }
    public static void makeMemberList(String inputFileName, String outputFileName) {
        try {
            Properties memberProperties = MemberList.getProperties(inputFileName);
            outputFileName = "C:\\work\\Facade\\src\\" + outputFileName + ".txt";
            TxtWriter writer = new TxtWriter(new FileWriter(outputFileName));
            Map<String, String> propertiesMap = writer.toMap(memberProperties);
            writer.writeHeader();
            writer.writeContents(propertiesMap);
            writer.writeFooter();
            writer.close();
            System.out.println(String.format("ファイルを出力しました。ファイル名:%s", outputFileName));
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

ListFacadeクラスはClientであるMainクラスの窓口となるクラスです。 また処理が成功した場合にはファイルを出力した旨のメッセージをコンソールに出力しています。 パターンの学習として、他に関しては特段難しい点はありません。

  • MemberListクラス staticなgetPropertiesメソッドのみが定義されており、ファイル名を受け取ることでプロパティファイルを返しています。
    特段難しい点はありません。

    • TxtWriterクラス
    TxtWriter.java
    import java.io.IOException;
    import java.io.Writer;
    import java.util.HashMap;
    import java.util.Map;
    import java.util.Map.Entry;
    import java.util.Properties;
    public class TxtWriter {
        private Writer writer;
        public TxtWriter(Writer writer) { // コンストラクタ
            this.writer = writer;
        }
        // プロパティを受け取り値(キー)が25を超えるものをMapに格納
        public Map<String, String> toMap(Properties properties) {
            Map<String, String> propertiesMap = new HashMap<>();
            for (Entry<Object, Object> e : properties.entrySet()) {
                if (Integer.parseInt((String) e.getValue()) > 25) {
                    propertiesMap.put(e.getKey().toString(), e.getValue().toString());
                }
            }
            return propertiesMap;
        }
        // ヘッダーを出力
        public void writeHeader() throws IOException {
            writer.write("***************Header***************");
            writer.write(System.lineSeparator());
        }
        // 内容を出力
        public void writeContents(Map<String, String> propertiesMap) throws IOException {
            writer.write("年齢が25歳を超えるメンバーは以下です。");
            writer.write(System.lineSeparator());
            for (Entry<String, String> e : propertiesMap.entrySet()) {
                writer.write(" ・名前:" + e.getKey() + " 年齢:" + e.getValue());
                writer.write(System.lineSeparator());
            }
        }
        // フッターを出力
        public void writeFooter() throws IOException {
            writer.write("***************Footer***************");
        }
        // 閉じる
        public void close() throws IOException {
            writer.close();
        }
    }
    

    非売品 Spick and Span Wフェイスビックカラーコート ブラウン 36 30%割引ブラック系,S非売品 Spick and Span Wフェイスビックカラー 30%割引ブラック系,S非売品 Spick and Span Wフェイスビックカラー 30%割引ブラック系,S非売品 Spick and Span Wフェイスビックカラー スピック&スパン コート - rural-academy.com30%割引ブラック系,S非売品 Spick and Span Wフェイスビックカラー スピック&スパン コート - rural-academy.com30%割引ブラック系,S非売品 Spick and Span Wフェイスビックカラー スピックアンドスパン コート 【30%OFF】30%割引ブラック系,S非売品 Spick and Span Wフェイスビックカラー スピック&スパン コート - rural-academy.comスピック&スパン コート - rural-academy.com

    その他のクラスの2つ目です。

    • テキストファイル
    memberList.txt
    #name=age
    Tanaka_Tarou=25
    Hoge_Hogeko=10
    Yamada_Hanako=30
    Neko_Nekota=50
    Foo_Footarou=80
    

    MemberListクラスの読み込みの対象となるテキストファイルです。 また処理を複数回行いたい場合にも同様にメソッドを呼び出してあげるだけで済みます。、 また、処理を複数回行いたい場合には、処理を行いたい数だけ、複雑な処理を記述する必要があります。

    (※今回はMainクラスからその他のクラスを利用していますが、パッケージを分けてprotectedを指定することで窓口からしかその他のクラスを利用できなくするということもあり得ます。 パターンを適用した場合と未適用の場合で、処理の結果には違いがないことが確認できます。

    実行結果(コンソール)
    ファイルを出力しました。ファイル名:C:\work\Facade\src\outputFile1.txt
    ファイルを出力しました。ファイル名:C:\work\Facade\src\outputFile2.txt
    
    実行結果(outputFile1.txt)
    ***************Header***************
    年齢が25歳を超えるメンバーは以下です。
     ・名前:Yamada_Hanako 年齢:30
     ・名前:Foo_Footarou 年齢:80
     ・名前:Neko_Nekota 年齢:50
    ***************Footer***************
    
    実行結果(outputFile2.txt)
    ***************Header***************
    年齢が25歳を超えるメンバーは以下です。
     ・名前:Yamada_Hanako 年齢:30
     ・名前:Foo_Footarou 年齢:80
     ・名前:Neko_Nekota 年齢:50
    ***************Footer***************
    

    Facadeパターンのメリットは以下になります。  2.意図しない呼び出しを行いバグになってしまうということを防ぐことができる。 以下でサンプルコードをアップしていますのでよろしければ参考にどうぞ。

    また、他のデザインパターンに関しては以下でまとめていますので、こちらも参考にどうぞ。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
《大人気》NFLダラスカウボーイズ☆Reebok☆XL☆ローン・スター☆太アーム>
15
Help us understand the problem. What are the problem?