2 / 2 / 0
Регистрация: 20.11.2010
Сообщений: 52
1

Паттерн Адаптер (Adapter): нужны примеры реализации

20.05.2012, 12:27. Показов 5988. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Изучаем паттерны (Шаблоны проектирования). Дали задание с паттерном Адаптер. Его назначение теоретически я понимаю: он позволяет совместно работать классам с несовместимыми интерфейсами. Но хотел бы найти пример применения этого паттерна - на примере всегда легче понять. Где можно найти такой пример? (Нашел только на JAva, в вики есть его реализация на C#- но не само применение)
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.05.2012, 12:27
Ответы с готовыми решениями:

Криптосистема Рабина: нужны примеры реализации
Здравствуйте! прошу помочь найти готовую программу по криптосистеме Рабина. если не сложно,...

UML Диаграмы: нужны примеры реализации
Есть курсовая работа "RAP Music" сделанная в вижуал студио 2010.Требуется построить 4 диаграммы к...

Многопоточность и их синхронизация, нужны примеры реализации
Начал разбираться с потоками (читаю шилдт C# 4.0), никак не могу разобраться с этими потоками. ...

Нужны примеры реализации передачи сообщений по tcp протоколу, только суть, ничего лишнего
Здравствуйте, уважаемые форумчане! Искал примеры реализации передачи сообщений по tcp протоколу,...

5
Эксперт .NET
17438 / 12830 / 3361
Регистрация: 17.09.2011
Сообщений: 21,108
20.05.2012, 13:04 2
Адаптер - это, говоря простым языком, обертка.

Вот простой пример класса, реализующего работу с .ini файлами и использующего нативные библиотеки.
Класс IniFile и является оберткой, или адаптером.
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
class IniFile
{
   public string Filename { get; set; }
 
   public IniFile(string filename)
   {
      this.Filename = filename;
   }
 
   public string GetValue(string section, string key)
   {
      var buffer = new StringBuilder(256);
      GetPrivateProfileString(section, key, string.Empty, buffer, sb.Capacity, Filename);
      return buffer.ToString();
   }
 
   public void SetValue(string section, string key, string value)
   {
      WritePrivateProfileString(section, key, value, Filename);
   }
 
   [DllImport("kernel32.dll", CharSet=CharSet.Unicode)]
    static extern uint GetPrivateProfileString(string lpAppName, string lpKeyName, string lpDefault, StringBuilder lpReturnedString, int nSize, string lpFileName);
 
   [DllImport("kernel32.dll", CharSet=CharSet.Unicode, SetLastError=true)]
   [return: MarshalAs(UnmanagedType.Bool)]
   static extern bool WritePrivateProfileString(string lpAppName, string lpKeyName, string lpString, string lpFileName);
}
2
2 / 2 / 0
Регистрация: 20.11.2010
Сообщений: 52
20.05.2012, 14:05  [ТС] 3
kolorotur, как я понял в данном случае мы используем обертку - потому как в C# нет класса который работает с ini файлами?

kolorotur, вы не могли бы мне еще помочь с советом... У меня задание: На основе Adapter реализовать GUI для формирования списка записей, обеспечивающий перенос выделенных записей в другой список.
Какие классы списков мне взять - где имеет смысл использовать обертку, где имеено адаптер решает такую проблему. Т.е. подскажите пожалуйста в общих чертах что мне здесь нужно сделать...
0
Эксперт .NET
17438 / 12830 / 3361
Регистрация: 17.09.2011
Сообщений: 21,108
20.05.2012, 15:19 4
Цитата Сообщение от iron-mik Посмотреть сообщение
как я понял в данном случае мы используем обертку - потому как в C# нет класса который работает с ini файлами?
Встроенных - нет, потому приходится тащить функции из WinAPI, но чтобы в основном коде не пихать PInvoke, делаем класс-переходник, который все необходимое делает сам.
Ну это как если бы вы приехали со своей зарядкой для мобилы в Штаты, где все розетки - две плоские щелочки, а не два кругляша, как у нас. Вам бы пришлось либо резать шнур и ставить другую вилку, либо приобрести переходник от круглой на плоскую розетку. Вот этот переходник в программировании и есть адаптер.

Цитата Сообщение от iron-mik Посмотреть сообщение
На основе Adapter реализовать GUI для формирования списка записей, обеспечивающий перенос выделенных записей в другой список.
Списки, как я понимаю, выглядят по-разному?

Цитата Сообщение от iron-mik Посмотреть сообщение
где имеет смысл использовать обертку, где имеено адаптер решает такую проблему.
Предполагаю, что адаптером должен быть класс, который "понимает" как устроены оба списка и который способен передавать данные из одного в другой.
0
2 / 2 / 0
Регистрация: 20.11.2010
Сообщений: 52
20.05.2012, 17:25  [ТС] 5
Цитата Сообщение от kolorotur Посмотреть сообщение
Списки, как я понимаю, выглядят по-разному?
Да, раз требуется использовать адаптер - то получается так.

Цитата Сообщение от kolorotur Посмотреть сообщение
Предполагаю, что адаптером должен быть класс, который "понимает" как устроены оба списка и который способен передавать данные из одного в другой.
А вы не могли бы предложить как бы вы сделали эту задачу? Какие списки использовали бы, чтобы попроще было?

Добавлено через 1 час 54 минуты
Кто-нибудь подскажите пожалуйста какие списки записей тут имеется ввиду?
Еще раз само задание:
На основе Adapter реализовать GUI для формирования списка записей, обеспечивающий перенос выделенных записей в другой список.
0
Эксперт .NET
17438 / 12830 / 3361
Регистрация: 17.09.2011
Сообщений: 21,108
20.05.2012, 17:52 6
Я вообще задачу не понял.
Что за списки? Что находится в этих списках?
0
20.05.2012, 17:52
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.05.2012, 17:52
Помогаю со студенческими работами здесь

Клиент - сервер на IPX, нужны примеры реализации
Задание: написать сервер и клиента, для обмена данными между собой по протоколу IPX. Это такое...

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

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

Реализовать и протестировать приведенные выше примеры реализации и использования интерфейсов
Реализовать и протестировать приведенные выше примеры реализации и использования интерфейсов....


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru