2つの方向からの分割
それではコードを分割していきましょう! ……でもちょっとだけ待ってください。あと1点だけ。コードの分割のプロセスには、
トップダウン方式
トップダウン方式では、
私は神だ。これからメール送信を行うクラスを創造するぞ。必要なのはメールを送信するMailSenderクラスだ。必要なメソッドは、
MailSender sender = new MailSender();
Map<String,String> params = new HashMap<String,String>();
params.put("name", "太郎");
sender.send("${name}さん、お買い得な情報です。",
"[email protected]", params);
私も神だ。まただまされたな、
だまされてはおらぬ、
MailSender sender = new MailSender("localhost", 22);
いや、
だまされてはおらぬ、
Mail mail = new Mail();
mail.addTo("[email protected]");
mail.addCc("[email protected]");
mail.addBcc("[email protected]");
mail.setBody(""${name}さん、お買い得な情報です。"");
mail.addParam("name", "太郎");
sender.send(mail);
「暇を持て余した神々たちの設計」
トップダウン方式は設計の書籍などでもよく取り上げられますし、
問題は
なお、
ボトムアップ方式
ボトムアップ方式はあとから分割する方式です。
まずはメール送信を行う処理を書いてみよう。
String template = "${name}さん、お買い得な情報です。";
String to = "[email protected]";
Map<String,String> params = new HashMap<String,String>();
params.put("name", "太郎")
...
...(テンプレートの置換処理)
...
// メール送信処理
MimeMessage msg = new MimeMessage(session);
...
// メール送信
Transport.send(msg);
できたー。
アドレスとか変わっても共通で使えるように、
分割してみたー。
String template = "${name}さん、お買い得な情報です。";
String to = "[email protected]";
Map<String,String> params = new HashMap<String,String>();
params.put("name", "太郎")
send(template, to, params);
...
// 抽出されたメール送信メソッド
private void send(String template, String to,
Map<String,Stirng params) {
...
...(テンプレートの置換処理)
...
// メール送信処理
MimeMessage msg = new MimeMessage(session);
...
// メール送信
Transport.send(message);
...
}
ボトムアップ方式は、
実際には、