какой объект страницы вернуть из обратного действия объекта страницы

В моем приложении на странице записи есть кнопка «Назад». Доступ к странице можно получить либо с домашней страницы, либо со страницы списка записей; а кнопка «Назад» должна вернуться на предыдущую страницу. Что должен возвращать метод back?

Один из способов — передать параметр RecordPageObject, чтобы он отслеживал, что он должен возвращать при нажатии кнопки «Назад». класс RecordPageObject {

  T back(Class<T> returnPageObjecType) {
    click("Back"); // some function to click on Back button.
    if (comingFromHome) { 
      return (T) PageObjectFactory.createHomePageObject();
    } else {
      return (T) PageObjectFactory.createListPageObject();
    }
  }

}

В этом случае код вызова будет таким:

// calling code
HomePageObject currentPage =  RecordPageObject.back(HomePageObject.class);

Вариант 2 — выполнять только click("Back") в функции back() и писать код вызова следующим образом:

RecordPageObject rec = .... // something to land on RecordPage
rec.back();
HomePageObject currentPage =  PageObjectFactory.createHomePageObject();

Я предполагаю, что еще одним вариантом будет передать тип PageObject в качестве общего параметра в RecordPageObject<T> и сохранить его как член. Это убережет нас от передачи этого значения в функцию back().


person Asad Iqbal    schedule 16.10.2014    source источник
comment
Простой ответ: заставить вызывающую функцию отслеживать это. Более сложный ответ заключается в наследовании и interface.   -  person SiKing    schedule 17.10.2014


Ответы (1)


Я бы посоветовал вам использовать первый подход, который вы использовали.

HomePageObject currentPage =  RecordPageObject.back(HomePageObject.class);

Это ясно объясняет поток вашего приложения, и это именно то, что вы должны делать. Второй подход, которому вы следовали, имеет один недостаток. Вы создаете объект страницы, однако эту задачу должен выполнять back! (Поскольку это должно работать в вашем пользовательском интерфейсе)

person Ant's    schedule 17.10.2014