Является ли передача дополнительных намерений между занятиями плохим стилем?

Мне кажется, что передача дополнительных функций через Intent-вызовы является нарушением инкапсуляции, поскольку классы напрямую взаимодействуют друг с другом. При этом единственная жизнеспособная альтернатива этому, которую я нашел, - это установить переменную в некотором общем классе и просто заставить каждое действие извлекать из него данные - однако часть меня не может избавиться от ощущения, что это не очень хорошо. выбора дизайна тоже нет. Может кто-нибудь пролить свет на это?


person John Roberts    schedule 02.12.2012    source источник
comment
На самом деле это аналог SomeClass myClass = new SomeClass("Some data");. Разница в том, что класс Activity в Android является особым случаем и не может быть создан с помощью new, а также не следует делать какие-либо методы общедоступными для любого другого компонента приложения. Передача данных в Intent - это основная часть модели Android.   -  person Squonk    schedule 02.12.2012
comment
На самом деле все наоборот: помещать что-то в общую структуру данных и затем обновлять это во всех действиях - это антипаттерн! В этом отношении действия Android должны быть практически безгражданскими. (С общим состоянием, хранящимся в постоянных местах через поставщиков контента и общие настройки.)   -  person Kristopher Micinski    schedule 02.12.2012


Ответы (2)


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

Модель Intent была разработана таким образом, что предполагает взаимодействие между основными компонентами операционной системы, особенно Activitys, а также предполагает, что вам необходимо сопровождать свои намерения некоторой конкретной информацией, такой как вид ACTIONs, которые вы хотите выполнить, CATEGORY вашего намерения и некоторый набор DATA, необходимых для реализации ваших намерений. Так что это удобная модель для такого рода взаимодействий.

В то же время использование некоторого общего класса между действиями, когда для этого есть готовое решение, является довольно неуместным подходом, ИМО.

person Alex Bonel    schedule 02.12.2012

Это не так, в конечном итоге вам это понадобится. Обычно я передаю минимум информации между действиями, а затем проверяю большие данные в запущенном действии onCreate ().

person Romain Piel    schedule 02.12.2012