Какой ОО дизайн использовать, когда есть ограничение от сторонней системы? - PullRequest
0 голосов
/ 14 сентября 2018

Представьте себе этот сценарий: Объект Customer, предоставленный сторонней системой, имеющей несколько свойств, связанных с телефонными номерами.

public class Customer {

    private String phoneAreaCode;
    private String phoneNumber;

}

Другая сторонняя система, которая получает свой собственный объект Customer, в котором есть объект Phone.

public class XCustomer {

    private Phone phone;

}

Я хотел бы знать, существует ли шаблон проектирования ОО для преобразования Заказчика в XCustomer. Должен ли один из клиентов знать о другом объекте Customer и преобразовать свойства телефона в объект Phone? Должен ли я создавать служебные классы для преобразования одного в другой? Или есть лучшее решение?

1 Ответ

0 голосов
/ 14 сентября 2018
  1. Поскольку классы Customer и CustomerX принадлежат третьей стороне, поэтому вы не можете изменять класс Customer и CustomerX.

  2. Я предпочитаю использовать простую утилиту дляпреобразование.

  3. Вы можете создать интерфейс / реализацию Конвертера.Это будет полезно в среде DI или если вы хотите иметь несколько реализаций

    public interface CustomerConverter {
    
        CustomerX convert(Customer customer);          
    }
    
    public class CustomerConverterImpl implements CustomerConverter {
    
         @Override
         public CustomerX convert(Customer customer) {
             // TODO convert
         }
    }
    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...