@startuml

class 申込ドメイン {
  プラン, 端末, 年齢, メアド, 住所
  + void 申込()
}
note "年齢の is未成年() を使うのはここ" as ドメインNote
ドメインNote .d. 申込ドメイン
note "未成年の場合は何かが起きる" as ドメインNote2
ドメインNote2 .r. 申込ドメイン

interface メールリポジトリ {
  + void 送信_端末あり(プラン, 端末, メアド)
  + void 送信_端末なし(プラン, メアド)
}

interface 配送リポジトリ {
  + void 配送(端末, 住所)
}
note "住所の is本州() を使うのはここ" as 配送Note
配送Note .u. 配送リポジトリ

申込ドメイン --> メールリポジトリ : 条件分岐
申込ドメイン --> 配送リポジトリ : メール送信より先\nただし端末がある場合のみ

メールリポジトリ -[hidden]r-> 配送リポジトリ

' メールリポジトリは呼び分け
' +2日は配送リポジトリの実装の中、絵からは欠落
' 未成年チェックは申込ドメインの中、絵からは欠落

@enduml