Challenge: Observer Pattern
In this challenge, you have to implement the observer pattern to solve the given problem.
We'll cover the following
Problem statement
In this challenge, you have to implement an Auction system using the observer pattern.
You have two classes Auctioneer
(the person conducting the bid) and Bidder
(the bidder bidding for the object).
Here’s what the Auctioneer
class needs to do:
-
It should maintain a list of all bidders.
-
It should have a function
registerBidder
to register the bidders. -
It should have an
announceNewBidderPrice
function to announce the bidding price given by a bidder. -
It should have a
notifyBidders
function to notify each bidder of the new bidding price.
Bidder
should have the following:
-
A
name
andbidPrice
. -
An
update
function that displays thename
of the bidder along with thebidPrice
they are giving. For example,{insert name} is offering {insert bid price} dollars
. It should displaySold to {insert name of bidder here}
if the bid price exceeds500
dollars. -
A
giveNewPrice
function that sets the bid price of a bidder.
Input
The announceNewBidderPrice
function is called after different bidders have given their prices
Output
The name of the bidders and the prices they gave are displayed along with the name of the bidder who wins the bid
Sample input
auctioner = new Auctioneer();
bidder1 = new Bidder("Ross");
auctioner.registerBidder(bidder1);
bidder2 = new Bidder("Joey");
auctioner.registerBidder(bidder2);
bidder1.giveNewPrice(400);
bidder2.giveNewPrice(550);
auctioner.announceNewBidderPrice()
Sample output
"Ross is offering 400 dollars"
"Joey is offering 550 dollars"
"Sold to Joey"
Challenge #
Take a close look and design a step-by-step solution before jumping on to the implementation. This problem is designed for your practice, so try to solve it on your own first. If you get stuck, you can always refer to the solution provided. Good Luck!
class Auctioneer{constructor(){//define constructor here}//write code here}class Bidder{constructor(){//define constructor here}//write code here}
Let’s discuss the solution in the next lesson.