KICK THE DP

KICK THE CAN CREWでデザインパターンを攻略するブログ

Ch.13 KICK THE VISITOR

【目標】

Ch.11でやった「KICK THE CAN CREWをHTMLでリスト表示しよう」をVisitorパターンで書き換えてみよう

【クラス図】

f:id:mikeera2:20160924190021p:plain

【実装】

<AbstractHtmlVisitor抽象クラス:Visitor>

f:id:mikeera2:20160924220650p:plain

<HtmlFactor抽象クラス:Element>

f:id:mikeera2:20160924221128p:plain

≪TextValueクラス:ConcreteElement≫

f:id:mikeera2:20160924224833p:plain

 ≪Tagクラス:ConcreteElement≫

f:id:mikeera2:20160924225105p:plain

f:id:mikeera2:20160924225216p:plain

≪HtmlVisitorクラス:ConcreteVisitor≫

f:id:mikeera2:20160924225449p:plain

f:id:mikeera2:20160924225458p:plain

[Mainクラス:ObjectStructure]

f:id:mikeera2:20160924225607p:plain

【出力結果】

f:id:mikeera2:20160924225711p:plain

【メモ】

Main→<body>「Visitor受け入れろ」

<body>→Visitor「OK、来いよ」

  Visitor「bodyの情報書くで。

      あれ、中に<ul>タグあるやん。」

  Visitor→<ul>「俺を受け入れてよ」

  <ul>→Visitor「OK、来いよ」

    Visitor「<ul>の情報書くで。

        あれ、中に<li>タグあるやん。」

    Visitor→<li>「俺を受け入れてよ」

    <li>→Visitor「OK、来いよ」

      Visitor「<li>の情報書くで。

          あれ、中にKREVAおるやん。」

      Visitor→KREVA「俺を受け入れてよ」

      KREVA→Visitor「OK、来いよ」

        Visitor「KREVAの情報書くで。

            KREVAにもう用はないな」

      Visitor「<li>にもう用はないな」

    Visitor「あれ、まだ<li>タグあるやん」

    Visitor→<li>「俺を受け入れてよ」

    <li>→Visitor「OK、来いよ」

      Visitor「<li>の情報書くで。

          あれ、中にMCUおるやん。」

      Visitor→MCU「俺を受け入れてよ」

      MCU→Visitor「OK、来いよ」

        Visitor「MCUの情報書くで。

            MCUにもう用はないな」

      Visitor「<li>にもう用はないな」

    Visitor「あれ、まだ<li>タグあるやん」

    Visitor→<li>「俺を受け入れてよ」

    <li>→Visitor「OK、来いよ」

      Visitor「<li>の情報書くで。

          あれ、中にLITTLEおるやん。」

      Visitor→LITTLE「俺を受け入れてよ」

      LITTLE→Visitor「OK、来いよ」

        Visitor「LITTLEの情報書くで。

            LITTLEにもう用はないな」

      Visitor「<li>にもう用はないな」

    Visitor「<ul>にもう用はないな」

  Visitor「<body>にもう用はないな」

 

いや、わからんわ。

 

・具体的な処理(WriteLine)をVisitorクラスにすべて書いているところがポイントらしい