Someone pointed out in the comments that his example does not use an abstract class as the base class, and asks if that makes this not an abstract factory.
The answer is that it is an abstract factory, as that is the name of the design pattern and has nothing to do with the abstract keyword in C#.
Composing an abstract factory should be done through interfaces as is shown, optionally, an abstract base class implementing those interfaces could also be created but is not required.
The answer is that it is an abstract factory, as that is the name of the design pattern and has nothing to do with the abstract keyword in C#.
Composing an abstract factory should be done through interfaces as is shown, optionally, an abstract base class implementing those interfaces could also be created but is not required.