That’s not really an architecture though, it’s just basic principles of modularization.
You could have a really skinny interface (one method call only):
class TaxLogic {
data = iDatabase.loadOneDatabaseRow(id);
process(data);
}
interface IDatabase {
loadOneDatabaseRow(id);
}
class PostgresDb implements IDatabase {
loadOneDatabaseRow(id) {...}
}
But this violates ports and adapters because the logic is on the outside and the database is on the inside.