java - 从字符串创建对象的正确 OOP 方法

标签 java android oop

我正在读取一些文本文件以从中创建对象。哪个类应该根据 OOP 原则处理文本文件?

我的 GUI 对象有一个方法来绘制表格并用数据填充它。该数据要么从 HTML 页面解析,要么从缓存的文本文件读取。我可以想到两种方法来处理这个问题,我想知道哪一种更好。

选项 1:

public void drawSchedule()
    {
        try
        {
            if (CacheManager.hasData("schedule")) //this is not the complete logic, but enough for this post
            {
                String cacheString = CacheManager.readData(this, "schedule");

                Schedule schedule = new Schedule(cacheString);
            }
            else
            {
                //read data from HTML page
            }
        catch (IOException e)
        {
            //generic error handling
            e.printStackTrace();
        }
    }

选项 2:

public void drawSchedule()
{
    try
    {
        if (CacheManager.hasData("schedule")) //this is not the complete logic, but enough for this post
        {
            String cacheString = CacheManager.readData(this, "schedule");

            //parse data here so we end up with a bunch of variables

            //courseList would be an ArrayList of Courses, if it makes any difference
            Schedule schedule = new Schedule(firstDay, courseList);
        }
        else
        {
            //Read data from HTML page
        }
    catch (IOException e)
    {
        //generic error handling
        e.printStackTrace();
    }
}

最佳答案

老实说,这两种方法都是有效的,并且很大程度上取决于数据的性质以及对象的使用方式。事实上,人们很容易将这个问题标记为主要基于意见!

如果解析非常特定于这些文本文件,并且如果 Schedule 在许多其他地方使用,那么解析代码可能最好分开。

另一方面,如果该解析在多个地方都有用,那么将其放在 Schedule 中是有意义的。考虑不要重复自己和封装。您希望代码在任何有用的地方都可见,但在其他地方不可见,并且您只想拥有该代码一次。

Java 库中的示例包括 Date 类,它有一些通用构造函数,但还有 DateFormat 类,它能够完成所有工作处理 DateString 之间的关系。

关于java - 从字符串创建对象的正确 OOP 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20915634/

相关文章:

java - 在 Android 中组合整数常量是如何工作的?

java - 在 Java 中,为什么括号中的赋值不会在表达式的其余部分被求值之前发生?

java - 对于 minOccurs ="0"的元素到 Java 的 XSD 转换与默认出现的元素不同

java - Android 第三次从图库中选择图像时内存不足

c++ - 构造函数的 Constexpr 条件

php - 无法获取 MySQL

c++ - 具有基类属性是否有效,即使它在向下转型时是虚拟的

java - x=x+3 和 x+=3 有什么区别?为什么一个需要类型转换而另一个不需要?

android - Android 中的自定义验证

javascript - Android 应用查看文档文件 ('.docx' , '.pdf' ...)