>>3962 ОП снова выходит на связь.
Прога почти готова, осталось допилить интерфейс. На данный момент:
1. "Хранитель", сохраняющий TableModel из JTable при каждом изменении последней и кнопка "назад", она же Ctrl+z. количество запоминаемых шагов регулируется в настройках проги.
2. "Стратегия", или я бы даже сказал, "Политика" (ибо в классе несколько методов, а не один, как в стретегии), для связи проги с БД. БД текстовая и планируется "драйвер" для mdb. Для подключения новых типов БД достаточно описать класс, реализующий интерфейс DBDriver (содержит описание таких методов как "подключить\отключить", "получить данные", "сохранить данные", "получить текстовое описание"). Прога в душе не знает, с какой БД работает, классы реализуют механизм наподобе "драйверов", которые можно динамически менять в настройках проги в рантайме.
3. "Итератор" для последовательного обхода TableModel (два массива - заголовки[] и сами данные ячеек[][]). При этом нет никаких for (int i =0;...), а питешься просто
MyIterator it = MyTableModel.getIterator();
while (it.hasNext()) {
if (!it.hasNextCol()) {
//здесь вставляется перенос строки
}
//здесь вставляются данные ячеек, разделенные спецсимволами, и все это сохраняется в
}
текстовик - БД
4. "Синглтон" - инишка. Доступна через статический класс в любом месте программы: IniFile.getValue("ИмяПараметра"). При этом в самом классе инишки используется тип Property, что позволяет при любом обломе при запросе параметра из инишки возвращать дефолтное значение, хранящаеся в самой проге (на случай, если инишка будет битая).
5. "Наблюдатель" - события, а также нажатия на кнопке в менюшке (но это реализуется самим NetBeans'ом, а в задании четко сказано - "написать прогу с реализацией", а не с использованием паттернов, поэтому здесь я слегка в раздумиях. Но для уверенности унаследовал AbstractTableListener и описал в отдельном классе, вместо дефолтного jTable1.addListener( new TableListener() {} }.
Теперь, анон, я спрашиваю свои ответы.
1) Возможно, у меня там есть еще 6."Команда" - кнопки в вехнем меню. Но здесь я снова не уверен, потому что видимо это паттерн реализуется NetBeans'ом. Считается ли описание метода
@Action
public void method() {}
и присваивание его потом в редакторе кнопки в свойство "action" паттерном "Команда"? (других способов назначить процедуру на кнопку не нашел, да и не искал, посмотрел как сделано в дефолтном примере, а поскольку весь Swing на паттернам реализован - вот и решил, что тут тоже паттерн).
2) Может ли использование классов, реализующих "драйвер БД" (ну тех, из п.2) считаться паттерном "Адаптер"?
3) Требуется МОАР. Еще два паттерна 2go, аноньчики. ну или один, если я прав на счет "команды".
4) такое написал, я ведь няша, правда?