Thank you for the replies, I've taken a step back and come up with a list of possible abilities cards will have. With that in mind I figured that a simple State Machine would work. Part of the reasoning behind using States is because every card in play might need to know every other card in play to be able to apply affects. Most cards will either affect the health, damage, fatigue (summoning sickness), or whether or not a player can attack certain cards (protection). The basic stats are just components that I can add/remove from a card and the total is just the sum of all its components. For example, I would play a card and add a component with 10 health, then if it takes damage I would add a component with -3 health, then I have a method to get the current health of a card which sums all the health components it has. That way, if I have a buff card enter play it can add +5 health but if the buff card is killed it just cycles through the other cards and removes it's +5 component from any card that had it.
So far I like this implementation because if I ever want to make a game altering card with an ability: 'time travel' - reset the game back one turn, it should be very possible with saving states. Although I'm not 100% sure how it would be implemented, I don't think it would require a complete re-write.