Вопросы проектирования шаблонов в Java - PullRequest
0 голосов
/ 28 декабря 2010

У меня есть вопрос шаблона проектирования в Java / J2EE

Постановка задачи ::
Предположим, что есть 2 файла, как показано ниже

Файл XYZ.properties -> имя = пара значений
Файл abc.xml -> атрибут = значение пары.

Оба вышеуказанных файла имеют пары <name,value>.

Вопрос: « Создайте страницу компонента / jsp так, чтобы вы могли читать, редактировать, сохранять пары имен и значений либо файла свойств, либо файла XML .?"
Итак, какой шаблон проектирования вы бы мне посоветовали использовать в Java .?
Имя, пара значений затем выбираются и отображаются на другой странице JSP, где я должен иметь возможность читать, редактировать, сохранять имя, пары значений, так что
1> операция чтения приводит к чтению имени, пары значений
2> Операция редактирования приводит к редактированию имени, пары значений
3> Сохранение операции приводит к сохранению значения для соответствующего имени, пары значений в базе данных и, следовательно, к обновлению файла свойства / xml.

**My Initial Analysis** : i would use a Factory design pattern since i have 2 files which have name,value pairs and at run time decide which one to choose depending on the name of file invoked,Once done i would pass the parameters to jsp file for Read,edit and save operation.Save would save the name,value pair to Database but i dont know how will it update the corresponding value for that name in either the property/xml file as well.

Правильно ли мое понимание? Если нет, пожалуйста, предоставьте дизайн / решение в java для того же самого, так что выполняются операции READ, EDIT, SAVE для пар в «.properties file» или «.xml file»?

Ответы [ 3 ]

1 голос
/ 28 декабря 2010

Это похоже на домашнюю работу.Не отдавая слишком много, Properties может читать / записывать как файлы .properties, так и XML.

1 голос
/ 28 декабря 2010

Фабричный шаблон будет выполнять эту работу.

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

создание двух отдельных классов для .propertiesи .xml реализация, расширяющая абстрактный класс.

Всякий раз, когда вы хотите сохранить, проверьте экземпляр класса и вызовите соответствующий метод.

0 голосов
/ 28 декабря 2010

Я думаю, что заводская модель верна.Сделайте абстрактные getInstance(fileName), read, create, update, remove методы.

В качестве рекомендации вы можете вернуть реализованный экземпляр после проверки содержимого файла - будь то XML (путем проверки заголовка XML или наличия корневого тега) или файл свойств.


В идеале, я бы создал класс MyFileFactory, который выглядит следующим образом:

  public class MyFileFactory{
     public static final MyFileFactory getInstance(String filename){
        //read the file header or first line to guess what instance to call
        int fileType = getFileType(fileName);
        if(fileType == MyFileFactory.XML_FILE)
            return new XMLFileEditor(fileName);
        else
            return new PropsFileEditor(fileName);
     }
     public abstract readFile();
     public abstract writeToFile();
     public abstract editFile();
  }

имеет эти классы для реализации методов

  public class XMLFileEditor extends MyFileFactory{
   ...
   private File f;
  }

и

  public class PropsFileEditor extends MyFileFactory{
   ...
   private File f;
  }

И я думаю, что вы готовы.


Если вы хотите сохранить в базе данных, а также в файле:

 writeToFile(String new_Node_or_property){

   //parseNode converts the property or XML node to an object  
     MyNode node = MyNode.parseNode(new_Node_or_property);
     MyFileDAO.insert(node);//write a code that parse
   // write here code to append in the file based on what 
   // filetype implentation it is -- XML, .properties, YAML whatever
 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...