It also depends on what level of detail you want. For instance, do you need to geocode addresses - producing an identifier that geographically locates the address? Do you need to validate that the address exists? Do you need to be able to convert the address to the standard format for the national postal authority?
If you need these features, then you need more than your own class - you need a third-party product.
I'd mention one, but although it did these things, it was unpleasant, to say the least. Google "Data Quality", "Address Standardization", "Data Profiling" and things like that.