Guest User

Untitled

a guest
Jun 9th, 2017
27
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. const Availability = (Super = Object) => class extends Super {
  2.     constructor() {
  3.         super();
  4.         this._isOpen = false;
  5.     }
  6.     open() {
  7.         this._isOpen = true;
  8.         return this;
  9.     }
  10.     close() {
  11.         this._isOpen = false;
  12.         return this;
  13.     }
  14.     isOpen() {
  15.         return this._isOpen;
  16.     }
  17. };
  18.  
  19. const Membership = (Super = Object) => class extends Super {
  20.     constructor() {
  21.         super();
  22.         this._members = {};
  23.     }
  24.     add(member) {
  25.         this._members[member.name] = member;
  26.         return this;
  27.     }
  28.     getMember(name) {
  29.         return this._members[name];
  30.     }
  31. };
  32.  
  33. const Defaults = (Super = Object) => class extends Super {
  34.     constructor(name = "The Saloon", specials = "Whisky, Gin, Tequila") {
  35.         super();
  36.         this._name = name;
  37.         this._specials = specials;
  38.     }
  39. };
  40.  
  41. // This is multiple inheritance, **NOT** composition
  42. class Bar extends Defaults(Availability(Membership())) {}
  43.  
  44. const myBar = new Bar("Moe's");
  45.  
  46. myBar.add({"name": "Homer"}).open().getMember("Homer")
Add Comment
Please, Sign In to add comment