Implementación de interfaz de patrón de fábrica abstracta o extensión de clase

Actualmente estoy implementando un patrón de fábrica abstracto para la conectividad de la base de datos, necesito separar la lógica de negocios y tener un código que no necesita ser reescrito para cada nuevo tipo de base de datos que necesita conectarse a mi aplicación, así que en este punto tengo estas clases

Interface Connection{}
MySql implements Connection{}
PostgreSql implements Connection{}

Entonces, el problema aquí es que cada clase que implementa la interfaz Connection tiene que reescribir los métodos en la interfaz, necesitaría una clase donde haya métodos generales como setStatement, executeQuery, etc., pero luego algunos métodos deberían sobrescribirse como connect método que diferirá según el tipo de base de datos,

Mi primer pensamiento es tener una clase adicional entre la conexión de interfaz y las subclases, donde los métodos se mantienen y se usan si no se anulan, pero esta solución no se siente de la manera correcta (corríjame si estoy equivocado)

Interface ConnectionInterface{}
class Connection{}
MySql extends Connection{}
PostgreSql extends Connection{}

Gracias

Respuestas a la pregunta(2)

Su respuesta a la pregunta