Factory Method
The Factory Method design pattern is all about creating objects.
But why do we need a method to create objects? Isn't that what constructors are for?
Well, constructors have limitations.
As an example, imagine we're building a game of chess. We would like to allow our players to save the state of the game into a text file and then restore the game from that position.
Since the size of the board is predetermined, we only need to record the position and type of each piece. We'll use algebraic notation for this – for example, the Queen piece at C3 will be stored in our file as qc3
, the pawn piece at A8 will be stored as pa8
, and so on.
Let's assume that we already read this file into a list of strings (which, by the way, would be an excellent application of the Singleton design pattern we discussed earlier).
Given the list of notations, we would like to populate our board with them:
// More pieces here val notations = listOf...