Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 19.08.2015
Сообщений: 8
1

Загрузчик данных в DatagridView и шаблон Стратегия

30.09.2015, 10:35. Показов 1145. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый день!
В рамках изучения шаблонов проектирования прошу подсказать как лучше с точки зрения проектирования?
Хочу написать загрузчик данных в DatagridView. Данные будут получаться из источников:
•Web сервис;
•Текстовый файл.

Для этой цели выбрал шаблон Стратегия. Даный шаблон выбран поскольку он позволяет инкапсулировать алгоритмы получения данных и обеспечивает их взаимозаменяемость.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
    interface LoadBehavior
    {
        void Load(System.Windows.Forms.DataGridView dwg);
    }
 
    class LoadFromTxt: LoadBehavior
    {
        void Load(System.Windows.Forms.DataGridView dwg)
        {
            /** Load data from text file */
        }
    }
 
    class LoadFromInternet: LoadBehavior
    {
        public void Load(System.Windows.Forms.DataGridView dwg)
        { 
            /** Load data from internet  */
        }
    }
 
    class Loader
    {     
        LoadBehavior loadBehavior
        System.Windows.Forms.DataGridView dvg;
 
        public void SetDataGridView(System.Windows.Forms.DataGridView dvg)
        {
            this.dvg = dvg;
        }
 
        public void LoadBehavior(LoadBehavior loadBehavior)
        {
            this.loadBehavior = loadBehavior;
            
        }
 
        public void Load()
        {
            this.loadBehavior.Load(dvg);
        }
    }
1. Насколько правильно передавать DataGridView в качестве параметра?
2. Как лучше реализовать передачу URL и имя текстового файла? В качестве второго параметра типа string?
3. Или корректней использовать для этой задачи шаблон Декоратор?

Заранее благодарен!
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
30.09.2015, 10:35
Ответы с готовыми решениями:

Шаблон стратегия
Есть такое задание: Имеется 2 платёжные системы. Если в корзине набралось товаров на сумму...

Экспорт данных из DataGridView в шаблон Word
Не получается реализовать экспорт данных с DataGridView. В DataGridView 7 колонок , создал таблицу...

Экспорт данных из связанных в DataGridView таблиц в шаблон Word
Добрый день! У меня возник вопрос как экспортировать данные из таблицы dataGridView в Word. В...

Экспорт из DataGridView в шаблон MS Excel
Здравствуйте, подскажите как реализировать задачу: Есть шаблон Excel под таблицу (.xltx) и...

3
6048 / 3457 / 335
Регистрация: 14.06.2009
Сообщений: 8,136
Записей в блоге: 2
01.10.2015, 12:34 2
Ключевой момент:
Цитата Сообщение от Abend Посмотреть сообщение
загрузчик данных в DatagridView
Т.е. загрузчик отдельно, средство отображения отдельно. Загрузчик ничего не должен знать о DatagridView и уж темболее принимать его через параметр. Т.о. ответ на первый вопрос: абсолютно неправильно.

Цитата Сообщение от Abend Посмотреть сообщение
Как лучше реализовать передачу URL и имя текстового файла? В качестве второго параметра типа string?
да, это возможно (не представляю, через какой другой тип можно было бы передать эти данные)

Цитата Сообщение от Abend Посмотреть сообщение
Или корректней использовать для этой задачи шаблон Декоратор?
После ответа на 1-й вопрос становится очевидным, что для DatagridView не имеет значения, каким шаблоном реализован загрузчик.
1
0 / 0 / 0
Регистрация: 19.08.2015
Сообщений: 8
01.10.2015, 13:25  [ТС] 3
Большое спасибо, понял!
Т.е. загрузчик отдельно, средство отображения отдельно. Загрузчик ничего не должен знать о DatagridView и уж темболее принимать его через параметр. Т.о. ответ на первый вопрос: абсолютно неправильно.
А если передавать DataTable?
да, это возможно (не представляю, через какой другой тип можно было бы передать эти данные)
Через object arg, например.
Если поместить свойства в непосредственно интерфейс?
C#
1
2
3
4
5
6
7
8
9
10
11
12
interface LoadBehavior
    {
        string StringParam {
            get; set;
        }
 
       DataTable DataTableParam {
            get; set;
        }
 
        void Load();
    }
0
6048 / 3457 / 335
Регистрация: 14.06.2009
Сообщений: 8,136
Записей в блоге: 2
02.10.2015, 12:10 4
Лучший ответ Сообщение было отмечено Abend как решение

Решение

Цитата Сообщение от Abend Посмотреть сообщение
А если передавать DataTable?
Загрузчик должен вернуть данные в виде удобном для средства отображения. Зачем передавать в загрузчик DataTable?
Цитата Сообщение от Abend Посмотреть сообщение
Через object arg, например.
Не вижу смысла передавать через тип object заведомо строковые данные, потому что придётся добавлять парсер.

Цитата Сообщение от Abend Посмотреть сообщение
Если поместить свойства в непосредственно интерфейс?
можно и в интерфейс. Только свойство DataTableParam я бы делал "только для чтения"
1
02.10.2015, 12:10
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.10.2015, 12:10
Помогаю со студенческими работами здесь

DataGridView информацию в заданные Word Шаблон
Столкнулся с случаем? когда надо взять информацию из БД которая выводиться в DataGridView. и...

Не загружается шаблон для экспорта из dataGridView в excel
Помогите разобраться пожалуйста, пересмотрела кучу тем, нашла решение как экспортировать из...

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

Копирование данных из одной DataGridView в другую DataGridView ?
Данные в первой таблице заполняются пользователем а во вторую таблицу(в другой форме) необходимо...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru