Какие объекты должны Вы возвращать от уровня доступа к данным до бизнес-слоя n-tier систему

Use Bundle

В Activity1 передайте данные:

Intent intent = new Intent(this, Activity2.class);    
Bundle bundle = new Bundle();
bundle.putString("key1",value1);
bundle.putInt("key2",value2);
...
intent.putExtras(bundle)
startActivity(intent);

В Activity2 получите данные:

Bundle extras = getIntent().getExtras();
if (extras != null) {
    String value1 = extras.getString("key1");
    int value2 = extras.getInt("key2");
    ...
}
13
задан Matthew Dresser 5 February 2009 в 22:46
поделиться

3 ответа

Вы не должны повторять определение класса на своем уровне доступа к данным (DAL).

Можно создать предприятия как 'немые' контейнеры в отдельном блоке, например, класс Человека может просто быть:-

public class Person
{
    int ID { get; set: }
    string Name { get; set: }
}

Затем можно дать DAL ссылку на слой предприятий. Ваши объекты контроллера, являются ли они в отдельном слое бизнес-логики, или на Вашем уровне UI, могут затем просто назвать DAL, который может создать предприятие, заполнить его от базы данных и возвратить его Вашему контроллеру.

Эта статья Imar Spaanjaars имеет хорошее объяснение этого шаблона.

21
ответ дан 1 December 2019 в 21:12
поделиться

Ваш бизнес-слой определенно не хочет знать о строках данных - пытаются оставить данные определенными классами в слое данных. Это уменьшает связь и освобождает Вас для изменения слоя персистентности позднее без оптового перепроектирования.

Для решения определенной проблемы Вы можете также:

  • Создайте объекты/объекты основных данных в своем слое данных и передайте их к своему бизнес-слою для потребления.
  • Или, поскольку кажется, что Вы делаете, создаете DTOs (Объекты Передачи данных), которые существуют просто как средство передачи данных от слоя данных до более богатой реализации Вашего бизнес-объекта в более высоком слое. Вы могли бы сделать это как часть шаблона репозитория в богатой модели предметной области.

Другой вещью, о которой Вы могли бы хотеть думать, являются уровни v слои - это имеет значение, как Вы думаете об этих вещах. Уровни являются обычно физическими, другими словами, они определяют границы между процессами. Слои обычно логичны, они разделяют функциональность программы на слабо связанные единицы. Вы стремитесь к слоям в этом случае.

5
ответ дан 1 December 2019 в 21:12
поделиться

Если Вы создаете интерфейсы к своим классам ДАО и размещаете их в Вашем бизнес-уровне, можно сослаться бизнес-уровень от Уровня доступа к данным. Классы ДАО в данных разделяют эхо-сигналы на уровни от бизнес-уровня.

Ваш бизнес-уровень ссылается на интерфейсы вместо того, чтобы непосредственно сослаться на объекты доступа к данным. Внедрение зависимости через контейнер МОК (как замок Windsor, например) позволит Вам выполнять это.

Эту технику называют разделенной соединенный интерфейсом и описывают здесь:

http://www.martinfowler.com/eaaCatalog/separatedInterface.html

Лучшее объяснение этой техники, которую я видел, может быть найдено в этой статье о лучших практиках NHibernate, записанных Billy McCafferty.

http://www.codeproject.com/KB/architecture/NHibernateBestPractices.aspx

Статья имеет большую информацию, которая характерна для NHiberbate, но хорошая половина из него является просто основательной информацией о разработке приложений, которые будут слабо связаны и легко протестированная единица.

1
ответ дан 1 December 2019 в 21:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: