オブジェクト指向 ・ Chapter 8
ポリモーフィズム
記事 ・ 冒頭を無料公開中
三大要素の最後、ポリモーフィズムです。日本語では多態性。「多くの形態を持つ」という意味です。名前はいかめしいですが、実は前の演習(UserとPremiumUser)でもう半分体験しています。この章では、それを「使う側」の視点から捉え直します。
一言でいうと、ポリモーフィズムとは
同じ呼び出し方で、相手によって違う動きになること。
そしてこの性質の真価は、「使う側が、相手が何者かを知らなくてよくなる」ことにあります。
題材: 通知システム
実務的な題材でいきます。アプリからユーザーに通知を送るシステムです。通知手段はメール、チャットツール、SMSの3種類。まず素直にクラスを作ります。
class Notification {
send(message: string) {
console.log("通知: " + message);
}
}
class EmailNotification extends Notification {
send(message: string) {
console.log("【メール】件名: お知らせ / 本文: " + message);
}
}
class ChatNotification extends Notification {
send(message: string) {
console.log("【チャット】 " + message + " @channel");
}
}
class SmsNotification extends Notification {
send(message: string) {
console.log("【SMS】" + message + "(70文字まで)");
}
}
const email = new EmailNotification();
email.send("メンテナンスのお知らせ");
ここまでは復習です(親を継承し、send をオーバーライドする)。
配列に混ぜて、一括で呼ぶ
「登録された全ユーザーに、それぞれの希望する手段で通知を送る」場面を考えます。ユーザーごとに通知手段はバラバラです。forループの中で何が表示されるか、予想してから実行してください。
4行の出力が、それぞれの形式で表示されたはずです。メールはメールの形式で、SMSはSMSの形式で。
このチャプターの続きは受講生限定です
本文の残り、図解・実行できるコードブロック・演習はプラン加入後に読めます。