Giter Club home page Giter Club logo

spotify-player-memento-pattern's Introduction

Spotify-Player-Memento-Pattern

Overview

This project is an example of how the Memento design pattern can be used. The Memento design pattern lets you save and restore the previous state of an object without revealing the details of its implementation. In other words, the design pattern ensures that it does not break encapsulation.

There are 3 classes that must be added in order to implement the Memento pattern.

  1. Originator: contains state of an object to be restored
  2. Memento: creates and stores states in Memento objects
  3. Caretaker: holds saved Mementos and is responsible for restoring object state

This pattern can be demonstrated through a playing music on a Spotify Player. When you play a song and want to go back to the previous song played, the Memento pattern is used. The song is the state being saved and restored. For our project:

  1. SpotifySession class implements the Originator interface
  2. Song class implements the Memento interface
  3. SpotifyApp implements the Caretaker interface.

When a user plays a song, a Song memento is created from the SpotifySession and saved to the SpotifyApp. All the mementos are saved in a Stack. If a user wants to go back to the previous song played, the SpotifyApp pops the memento on top of the stack and restores that state to the SpotifySession.

spotify-player-memento-pattern's People

Contributors

andrew001347 avatar gabrielletaylor avatar michael-m-truong avatar tytydraco avatar

Stargazers

 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.