Abstract Factory Pattern The Abstract Factory Pattern is a creational design pattern that provides a way
to create families of related objects without specifying their concrete classes.
This pattern ensures consistency among objects in a family and makes it easier
to add new variants or configurations, promoting flexibility in software design.
Code
Tests
// AbstractProductA
export abstract class Modal {
constructor ( public argument : string ) {
console . log ( argument );
}
}
// AbstractProductB
export abstract class Button {
constructor ( public argument : string ) {
console . log ( argument );
}
}
// ConcreteProductA1
export class DarkModal extends Modal {}
// ConcreteProductA2
export class DarkButton extends Button {}
// ConcreteProductB1
export class LightModal extends Modal {}
// ConcreteProductB2
export class LightButton extends Button {}
// AbstractFactory
export abstract class ThemedComponent {
abstract createButton () : Button ;
abstract createModal () : Modal ;
}
// ConcreteFactory1
export class DarkThemedComponent extends ThemedComponent {
createModal () : Modal {
return new DarkModal ( "DarkModal" );
}
createButton () : Button {
return new DarkButton ( "DarkButton" );
}
}
// ConcreteFactory2
export class LightThemedComponent extends ThemedComponent {
createModal () : Modal {
return new LightModal ( "LightModal" );
}
createButton () : Button {
return new LightButton ( "LightButton" );
}
}
export class Client {
modal : Modal ;
button : Button ;
constructor ( factory : ThemedComponent ) {
this . modal = factory . createModal ();
this . button = factory . createButton ();
}
}