Skip to content

Instantly share code, notes, and snippets.

@night-fury-rider
Created September 9, 2020 11:24
Show Gist options
  • Save night-fury-rider/e5da3d1aa8fa5c74921063ce2830d1b3 to your computer and use it in GitHub Desktop.
Save night-fury-rider/e5da3d1aa8fa5c74921063ce2830d1b3 to your computer and use it in GitHub Desktop.
Design Pattern - Factory
var Mobile = function(size) {
this.displaySize = size;
};
var Tablet = function(size) {
this.displaySize = size;
};
var Desktop = function(size) {
this.displaySize = size;
};
// Factory which will create different types of objects based on requirement
var DeviceFactory = function(){
var device;
this.createDevice = function(size) {
switch(size) {
case 'small':
return new Mobile(size);
case 'medium':
return new Tablet(size);
case 'large':
return new Desktop(size);
}
}
};
var factory = new DeviceFactory();
var device1 = factory.createDevice('small');
var device2 = factory.createDevice('medium');
var device3 = factory.createDevice('large');
console.log(device1.displaySize); // small
console.log(device2.displaySize); // medium
console.log(device3.displaySize); // large
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment