As can be seen from the code above the basic interface to the library makes use of
two abstract factories which creates the appropriate encoder and output backend.
This design makes the addition of new output formats and new symbologies transparent
for the end user of the library.

If instead we wanted to encode the data string using symbology "CODE 128" instead,
it would only be necessary to modify the first line in the above code so instead it
would become.

As can be seen in the examples above both the backend and the symbology is
specified by means of a symbolic constant. The following list shows the symbolic
constants available to specify the different supported symbologies.