首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java设计问题-类、函数、访问修饰符

Java设计问题-类、函数、访问修饰符
EN

Stack Overflow用户
提问于 2010-05-04 23:48:13
回答 3查看 1.3K关注 0票数 1

我是Java的新手。我有一些设计问题。

假设我有一个爬虫应用程序,它执行以下操作: 1.抓取一个url并获取其内容2。解析内容3。显示内容。

  1. 如何决定是实现函数还是类?--解析器是爬虫类的函数,还是它本身应该是类,以便其他应用程序也可以使用它?--如果应该是类,是保护类还是公共类?
  2. ,如何在实现公共类还是受保护类之间作出决定?--如果我必须创建一个类来从解析的内容生成统计信息,例如,应该保护这个类(所以只有爬虫类才能访问它)还是应该是公共的?

谢谢罗恩

EN

回答 3

Stack Overflow用户

发布于 2010-05-04 23:59:30

对于这些类型的问题,我看到的最好的指导是“OO设计的坚实原则”。

http://butunclebob.com/ArticleS.UncleBob.PrinciplesOfOod

这些原则中最基本的,也是回答你第一个问题的原则是“单一责任原则”。这说明,“一个类应该有一个,而且只有一个,需要改变的理由。”换句话说,每个类都应该做一件事情。如果您最终需要更改一件事情的工作方式,那么您只需要更改一个类,并且希望只有一个位置可以在该类中进行更改。在您的示例中,您可能需要一个类从URL检索内容,另一个类将其解析为某种内存中的数据结构,另一个类用于处理数据(如果需要),还有另一个类(或类)以所需的任何格式显示内容。显然,您可能会对类感兴趣,但是测试许多小的、单一操作的类通常比测试一个或两个大型的、包罗万象的类更容易。

关于公共还是受保护的问题取决于您计划如何使用此代码。如果您的类可以在库之外独立使用,您可以考虑公开它,但是如果它完成了一些特定的或与其他类相关联的任务,那么它可能会受到保护。例如,从URL检索内容的类是一个很好的通用类,因此您可以公开它,但是在库之外执行某种特定类型的数据操作的类可能没有用处,因此可以保护它。总的来说,它并不总是黑白相间的,但最终,无论是哪种方式,它通常都不是什么大交易。

票数 2
EN

Stack Overflow用户

发布于 2010-05-05 00:09:59

我觉得安迪的回答很好。我有几个补充:

如果您认为将来会扩展一个类,则可以将所有private方法(如果有的话)设置为protected。这样,以后的任何扩展类都可以访问这些类。

我喜欢这样一条规则,即方法不应该比不滚动的情况下看到它的开始和结束括号({ })更长。如果方法的长度大于此,请尝试将其划分为几个方法(privateprotectedpublic按您的喜好)。这使得代码更具可读性,也可以在代码行上保存。

因此,假设一个方法变得越来越大,您可以将它分成几个private方法。如果这些新方法仅在第一个“母”-method中使用,那么将所有这些都移到自己的类中是有意义的。这样,您将使原始类更小、更易读。此外,您将使新类的功能更易于理解,因为它与原始类的功能没有混淆。

票数 2
EN

Stack Overflow用户

发布于 2010-05-05 10:23:54

我喜欢把类想象成“男人”,他们可以做特定的事情“方法”。

在你的例子中,有一个人,如果你告诉他网址是哪个,他就可以获取网址的内容。

还有另一个人,他非常擅长分析内容。我想他是用一个叫做罗马的工具做的,但我不确定。他保守秘密(暗示;)

我们还有第三个家伙,他展示东西。他有点弱智,只懂“另一个人”所产生的东西,但是这很好。

最后,这个项目需要一个老板,他给其他三个人下命令,并在他们之间传递信息。

ps:我从来没有想过让课程受到保护。通常他们只是公开的,没有任何具体的理由。只要不疼,何必费心呢?

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2769710

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档