Как подготовить Business Objects к возможному расширению в веб-сервисах - PullRequest
0 голосов
/ 02 декабря 2010

При создании веб-сервиса я решил обменять Business Object (BO) между клиентом и веб-сервисом.

Если в будущем я получу запрос на расширение моей модели, добавлю несколько новых атрибутов (полей) в свой BO и отправлю его клиенту, какой будет наилучший подход?

Итакв основном, каждый BO может иметь 0..n мета-полей.
Каждое мета-поле имеет вид Key, Value, например, где ключи могут быть любыми, от простых типов данных до других BO.

Вот немногоJava-код для моделирования BO, мне просто нужно подтверждение, что я на правильном пути.

class AbstractBO{

 //optional list of meta fields for future extension
 List<MetaField> metaFieldList;

 //setters. getters

}

----

class MetaField {

 private Object key;
 private Object value; 

// setters
// getters

}

----

class MyBO extends AbstractBO {

//BO specific fields
private String name;
...


}

---

TODAY

class Person extends AbstractBO {

 private String name;
 private int age;

 //extend metaFieldList = null;

}


----

TOMORROW

class Person extends AbstractBO {

 private String name;
 private int age;

 //list with new metafield 

}

Как смоделировать Person для целей завтрашнего дня?

1 Ответ

0 голосов
/ 19 апреля 2013

Если, как следует из вашего последующего комментария, вы действительно хотите отправить прямой объектный код (предположительно, с помощью реализации Serializable) вместо использования XML или JSON (что вы обычно делаете при реализации сетисервис), тогда я не знаю, как вы на самом деле сможете достичь того, что вы хотите.

Когда Java пытается воссоздать ваш объект путем десериализации, он должен будет сопоставить входные данные с тем, что онсчитает, что класс.В целях лучшей практики вам следует реализовывать serialVersionUID и изменять его каждый раз, когда вы изменяете свой класс, чтобы при добавлении переменных сотрудник на другом конце не смог ошибочно восстановить класс, который вы ему отправили, если онесть старая версия кода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...