Classe DAO, usar interface ou herança?

Olá!

Tenho uma classe onde cadastra um objeto product, porem também preciso cadastrar um objeto box. A dúvida é o uso de interface ou herança? Qual o melhor nome da interface ou classe abstrata nesse caso? A classe Connection utiliza o pattern Factory Method, retornando uma conexão com o banco.

Segue o código de ProductDAO:

public class ProductDAO {

private Connection connection;

public ProductDAO(Connection connection) {
    this.connection = connection;
}

public void registerProduct(int reference, String description, Double unitWeight) {
    var product = new Product(reference, description, unitWeight);
    String sql = "insert into product(reference, weight, description, in_use) values (?, ?, ?, ?)";
    PreparedStatement preparedStatement;
    try {
        preparedStatement = connection.prepareStatement(sql);
        preparedStatement.setInt(1, product.getReference());
        preparedStatement.setDouble(2, product.getUnitWeight());
        preparedStatement.setString(3, product.getDescription());
        preparedStatement.setBoolean(4, product.isInUse());
        preparedStatement.execute();
        preparedStatement.close();
        connection.close();
    } catch (SQLException e) {
        throw new RuntimeException(e);
    }
}

}

Eu recomendo que você crie uma nova classe que possa intermediar entre a classe RegisterProduct e a instância do ProductDAO. Essa nova classe poderia conter um método para criar uma instância da classe RegisterProduct e obter a instância do ProductDAO. Podemos chamá-la de ServiceProduct. Dentro dessa classe, você pode criar objetos da classe RegisterProduct e, ao utilizar os métodos getters dessa classe, realizar adições ao banco de dados de forma eficiente.