>What is wisdom here, is there a "right" way of doing this, or is this just a preference what I like more?
>One thing I can imaging is that the latter solution violates the single responsibility principle, because the country class should not be made responsible for deciding which taxtable to use. But on the other hand, it is in the context of the country that the decision is done...
Does the procedure differ between tax tables for a given country? Does the behavior change so much that you need to have different code for each year?
If so, then go for country+year classes. If not, i.e. the logic changes only from country to country, then have only country classes and pass the year as a parameter, i.e. create the Aruba tax class, tell it to use 2009 data and that's it.