Сериализация и десериализация
Источник: https://habr.com/ru/post/454290/
В рамках разработки протокола передачи данных нужно сделать сериализацию и десериализацию некоторого типа "User" в строку.
User{
String Name;
Int Age;
}
Можно подумать, что сериализацию и десериализацию нужно делать в отдельных классах:
UserDeserializer{
String deserialize(User){...}
}
UserSerializer{
User serialize(String){...}
}
Так как у каждого из них есть своя ответственность и один повод для изменения.
Но повод для изменения у них общий — "изменение формата сериализации данных". И при изменение этого формата всегда будут меняться и сериализация и десериализация вместе.
Согласно принципу локализации изменений мы должны объединить их в один класс:
UserSerializer{
String deserialize(User){...}
User serialize(String){...}
}
Это избавиляет нас от излишней сложности, и необходимости помнить, что при каждом изменении сериализатора, нужно помнить и о десериализаторе.