Ch.13 KICK THE VISITOR
【目標】
Ch.11でやった「KICK THE CAN CREWをHTMLでリスト表示しよう」をVisitorパターンで書き換えてみよう
【クラス図】
【実装】
<AbstractHtmlVisitor抽象クラス:Visitor>
<HtmlFactor抽象クラス:Element>
≪TextValueクラス:ConcreteElement≫
≪Tagクラス:ConcreteElement≫
≪HtmlVisitorクラス:ConcreteVisitor≫
[Mainクラス:ObjectStructure]
【出力結果】
【メモ】
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クラスにすべて書いているところがポイントらしい