# Facade パターン # # Java言語で学ぶデザインパターンと同様の例題をRubyで記述した。 # # coded by Takehiro Kaga # class Database def Database.getProperties(dbname) @hash = Hash.new filename = dbname + ".txt" file = open(filename) while line = file.gets data = line.chop ary = data.split("=") @hash[ary[0]] = ary[1] # データファイルをハッシュにして保持 end file.close @hash end end class HtmlWriter def initialize(filename) @file = open(filename, "w") end def title(title) @file.write("") @file.write("
") @file.write("" + msg + "
\n") end def link( href, caption ) paragraph("" + caption + "") end def mailto( mailaddr, username ) link("mailto:" + mailaddr, username ) end def close @file.write("") @file.write("\n") @file.close end end class PageMaker def PageMaker.makeWelcomePage(mailaddr, filename) mailprop = Database.getProperties("maildata") username = mailprop[mailaddr] writer = HtmlWriter.new(filename) writer.title("Welcome to " + username + "'s page!") writer.paragraph(username + "のページへようこそ。") writer.paragraph("メール待っていますね.") writer.mailto(mailaddr, username) writer.close puts filename + " is created for " + mailaddr + " (" + username + ")" end end # ---- Main ---- # PageMaker.makeWelcomePage("hyuki@hyuki.com", "welcom.html")