Разработка адреса и модели клиента

Я столкнулся с проблемой, когда проектировал адрес и классы (модели) клиентов.

class Customer
    (String) first_name
    (String) last_name
    (String) document_id
    (String) phone
    (String) email
    (Address) contact_address
    (Address) billing_address

class Address
    (String) street
    (String) block
    (String) apt
    (Location) location

class Location
    (String) zip_code
    (String) city_name
    (State) state
    (Country) country

class State
    (String) name
    (Country) country

class Country
    (char[2]) tld
    (String) name

Но информация в State.country удваивается с Location.country. Однако я не могу представить ситуацию, когда страна не была назначена государством. В противном случае, если я опущу поле страны из класса Location, было бы странно получить все объекты локаций из одной страны.

Я что-то пропустил?

Как насчет:

class Address2
    (String) street
    (String) block
    (String) apt
    (String) zip_code
    (String) city_name
    (String) state
    (String) country

Однако я потеряю дополнительную информацию о tlds и буду хранить дублированные (не оптимизированные) данные в Location.state и Location.country

1 ответ

Зачем вам нужна страна в классе Location?

Точно так же, как вы можете получить tld из state.countryId, вы можете получить страну из location.stateId.

Другие вопросы по тегам