Challenge: Solution Review

This lesson will explain the solution to the problem from the previous coding challenge.

We'll cover the following...

Solution #

Press + to interact
class Model{
constructor(){
this.senderName = "";
this.receiverName = "";
this.emailTitle = "";
}
setSenderName(senderName){
this.senderName = senderName;
}
getSenderName(){
return this.senderName;
}
setReceiverName(receiverName){
this.receiverName = receiverName;
}
getReceiverName(){
return this.receiverName;
}
setEmailTitle(emailTitle){
this.emailTitle = emailTitle;
}
getEmailTitle(){
return this.emailTitle;
}
}
class View{
constructor(){
this.presenter = null;
}
registerWith(presenter){
this.presenter = presenter;
}
sendEmail(to,fromWhom, emailTitle){
this.presenter.sendEmail(to,fromWhom, emailTitle)
}
displayEmailInfo(senderName,receiverName, emailTitle){
console.log("Email From: " + senderName + " To: " + receiverName + " Title: " + emailTitle);
}
}
class Presenter{
constructor(view){
this.view = view;
this.model = null;
}
setModel(model){
this.model= model;
}
getView(){
return this.view;
}
sendEmail(to,fromWhom, emailTitle){
this.model.setEmailTitle(emailTitle)
this.model.setSenderName(fromWhom)
this.model.setReceiverName(to)
this.view.displayEmailInfo(this.model.getSenderName(), this.model.getReceiverName(),this.model.getEmailTitle())
}
}
var model = new Model()
var view = new View()
var presenter = new Presenter(view)
presenter.setModel(model)
view.registerWith(presenter)
presenter.getView().sendEmail("Rachel", "Joey", "Rent Discussion")
presenter.getView().sendEmail("Monica", "Phoebe", "Smelly Cat Draft")

Explanation

The challenge requires you to use the MVP pattern to implement ...