なんじゃくにっき

プログラミングの話題中心。

Scala de Design Pattern: Before After

 GoFデザインパターン以外のパターンもやってみる。
まずはBefore Afterパターン。
ある手続き(本処理)の前後に必ず特定の処理を行わせたいときに使うパターン。
try〜finallyで本処理を囲う。
本処理で例外が発生しても必ず後処理が実行される。
パターンの名前は知らなくてもDelphiとかC#とかJavaを扱う人ならほぼ間違いなく知っているパターン。
 

object Main {
def before = println("Before")
def doStuff = println("劇的改造!")
def after = println("After")

def main(args: Array[String]) = {
if (true) {
before()
}; try {
doStuff()
} finally {
after()
}
}
}

 
この例でのif(true)は動作的には全く意味はない。
before, doStuff, afterのインデントを揃えるために入れただけ。
なお、Scalaではifブロックは関数なので同じ行に続けて別の文を書くならセミコロンで区切る必要がある。
これはJavaとは違うところ。