Java中的设计模式问题

时间:2010-12-28 10:57:32

标签: java design-patterns

我在Java / J2EE中有一个设计模式问题

问题陈述::
假设有2个文件如下

  

XYZ.properties文件 - > name = value pair
  abc.xml文件 - > attribute = value对。

以上两个文件都有<name,value>对。

问题是“设计组件/ jsp页面,以便您可以读取,编辑,保存属性文件或xml文件的名称,值对。”
那么你建议我应该在Java中使用哪种设计模式。?
然后获取名称,值对并显示在另一个jsp页面中,我应该能够读取,编辑,保存名称,值对等。 1&gt;读取操作导致读取名称,值对
2&gt;编辑操作会导致编辑名称,值对
3&gt;保存操作会导致保存数据库中相应名称,值对的值,从而更新property / 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中提供相同的设计/解决方案,以便对“.properties文件”或“.xml文件”中的对执行READ,EDIT,SAVE操作?

3 个答案:

答案 0 :(得分:1)

这看起来像是家庭作业。 在不放弃太多的情况下,属性可以读取/写入.properties和.xml文件,有关http://download.oracle.com/javase/7/docs/api/java/util/Properties.html的更多信息。

答案 1 :(得分:1)

工厂模式可以完成这项工作。

创建一个抽象类,其中包含抽象读取,修改,保存方法以及键和值的getter和setter

为扩展抽象类的.properties和.xml实现创建两个单独的类。

每当您想要保存对类实例的检查并调用适当的方法时。

答案 2 :(得分:0)

我认为工厂模式是正确的。制作抽象的getInstance(fileName)readcreateupdateremove方法。

作为建议,您可能希望在检入文件内容后返回已实现的实例 - 无论是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
 }