MVP - Предъявитель должен использовать Сессию?

Заимствуя из этого ответа, вы можете работать непосредственно с базовым массивом numpy. Я не знаю ни о какой встроенной функции панд, которая делает то, что вы просите.

import pandas as pd

df = pd.DataFrame(pd.np.ones((3, 4)))
coordinates = [(2, 1), (2, 3)]
rows, cols = zip(*coordinates)
df.values[rows, cols] = pd.np.inf

Результаты:

     0         1    2         3
0  1.0  1.000000  1.0  1.000000
1  1.0  1.000000  1.0  1.000000
2  1.0       inf  1.0       inf

5
задан Simon Keep 3 November 2008 в 10:58
поделиться

7 ответов

Я делаю что-то вроде этого в своей Реализации MVP, я ввожу ICookieManager, ISessionManager, ICacheManager, IConfigurationManager, IRedirector в моего предъявителя, которые реализованы классами, которые переносят функциональность для этого.

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

Удачи

8
ответ дан 13 December 2019 в 19:38
поделиться

Спасибо за Ваши ответы все, так для подведения итогов...

Мы говорим, что на самом деле Предъявитель должен смочь получить доступ к данным из сессии (предпочтительно через интерфейс), и это - представление, которое не должно получать доступ к нему (хранить молчание)?

1
ответ дан 13 December 2019 в 19:38
поделиться

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

Я предположил бы, что только предъявитель должен знать о сессии, поскольку тот объект является самой близкой вещью к контроллеру в MVP.

0
ответ дан 13 December 2019 в 19:38
поделиться

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

Ваш предъявитель заполнил бы представление что контроллер, выбранный от сессии.

2
ответ дан 13 December 2019 в 19:38
поделиться

Я исследую пассивные подходы MVP, также. Я видел несколько вещей, сделанных в сети, оба из которых оставляют персистентность сессии до представления - или посредством инжекции, как голубь упомянул, или явное управление.

Примеры Внедрения зависимости видны здесь: http://www.codeproject.com/KB/aspnet/Advanced_MVP.aspx и здесь: http://geekswithblogs.net/opiesblog/archive/2006/06/30/83743.aspx. Прием здесь должен управлять всеми экземплярами сессии в статической переменной и препятствовать тому, чтобы они перезаписали друг друга. (Я не уверен, что первый пример выполняет это правильно.)

Второй подход здесь: http://codebetter.com/blogs/jeffrey.palermo/archive/2005/03/28/128592.aspx. В этом примере представление знает, как сохранить его состояние. Оборотная сторона - то, что каждый раз предъявитель помещает данные в представление, которое они должны назвать методом Обновления на представлении для принуждения повторного переплетения. Это не необходимо в примерах выше, но Вы не должны управлять таблицей сессий. Я не уверен, как этот подход усложняет тестирование с насмешкой инструментов.

0
ответ дан 13 December 2019 в 19:38
поделиться

Да, как говорит голубь, перенесите любые доступы Сессия в другой класс.

Это означает, что Вы могли ввести ложный класс этого типа для моделирования различных значений для Сессии.

Для ответа на вопрос более конкретно, я склонен идти для шаблона Предъявителя Наблюдения (http://martinfowler.com/eaaDev/SupervisingPresenter.html), который сохраняет Представления как ОЧЕНЬ немые. Таким образом, только Предъявитель получил бы доступ к Сессии (хотя не непосредственно, поскольку я сказал прежде), и говорят Представление, что сделать.

0
ответ дан 13 December 2019 в 19:38
поделиться

Подсказка должна соединить интерфейсом с каждым потребляемым объектом. Это делает предъявителя и модель легче протестировать с насмешкой и сфокусировать тесты на поведении.

0
ответ дан 13 December 2019 в 19:38
поделиться
Другие вопросы по тегам:

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