我只是想知道我所做的事情是不是很糟糕的设计.

我有一个ArrayList的东西.我需要这个列表永远存在.我只需要有一个这样的清单.我也有一些方法可以与这个列表进行交互.因此,我让一切都变得静止.

问题在于,由于所有这些东西都隐藏在一个类中,因此该类中的所有内容都被声明为静态.这看起来有点奇怪,因为我想让整个课程都是静态的.

Java不允许我将整个类静态化并且我被教导在我的代码中最小化静态方法的事实在我的头脑中引起了一些警钟,但老实说我看不出任何合理的理由为什么我做得不好.

编辑:关于该计划的更多信息以及为什么我决定做我做的事情,因为我猜这会有所帮助(当然,它被问到了).

程序的中心是两个数据库,一个用于项目,另一个用于字符.
角色需要暂时拥有项目,但所有项目必须始终列出.

我决定我会有一个项目的arraylist,每个项目都有一个布尔标记可用或不可用(可以很容易地显示所有项目和可用项目).每个角色都有自己的,较小的项目arraylist,我将从数据库中添加项目的重复项.

为了能够从其他类访问数据库(这是我从这个想法开始的地方),我认为我最简单的选择是简单地使大型arraylist静态,因为没有我不需要它的情况并且没有情况在哪里我需要不止一个.当然,当我将列表设置为静态时,我需要使所有与它交互的基本方法也是静态的.

我很确定有更好的方法来做我想做的事情,但我只是一个初学者练习.

EDIT2:哦,项目列表将被添加到,删除,并在程序运行时修改它们的项目.接收物品副本的角色的另一个效果是,只要拥有物品,他们自己的物品就会保持不变.

解决方法

根据您的更新,您已经达到了经典的“它是单身人士!”那一刻,有人应该向你指出“它(几乎)从来不是一个单身人士!”.相反,这应该是一个普通的,非静态的非单例类,应该编写应用程序的其余部分以始终使用它的单个实例.您的应用程序只需要一个事物的单个实例这一事实并不会使该事物成为单例.您可以阅读Google搜索 “why is singleton evil”和 “singleton antipattern”中的几篇文章.

听起来你可能正在谈论共享的可变状态,这是另一种(巨大的)蠕虫病毒,你不想在没有经过仔细考虑的情况下进入它们.

Java:类中的所有东西都是静态的 – 这是合理的吗?的更多相关文章

  1. 在Xcode 4中构建与Objective-c应用程序一起使用的静态C lib

    最好的祝福,吉米解决方法JimmyKoerting在评论中提供了正确的答案:应用程序需要与libstdc.dylib链接以解析标准库符号.感谢JimmyKoerting,但还有一件我想添加的内容是,如果您在iOS6.1中使用xcode最新版本,请添加此libstdc.6.dylib

  2. ios – 如何从故事板中创建的静态UITableView中删除单元格

    解决方法你不能真正处理这个数据源,因为使用静态表,你甚至没有实现数据源方法.高度是走的路.尝试这个:更新看来,在autolayout下,这可能不是最好的解决方案.有一个替代答案here可能有帮助.

  3. ios – 两个类,回调和单元测试

    而且,我不觉得这样的行为会很容易测试?

  4. ios – 在分组的表视图中混合静态和动态部分

    可能需要保持静电细胞的强大性能?在表视图的相同.xib文件中直接设计每个静态单元格,并为它们设置插座是否更好?(虽然这不允许重用我的自定义单元格设计…

  5. ios – OS X:将.dylib转换为.a / .o(动态到静态)?

    假设我已经阅读了thiscaveat,我仍然希望将TBB用作静态链接库.但我真的不想重写TBBmakefile来生成libtbb.a而不是libtbb.dylib.是否有一个简单的命令行方式将libtbb.dylib转换为libtbb.o并使用相同的入口点?

  6. xcode – Swift Constants文件 – 类还是结构?

    我想在我的Swift项目中创建一个Constants文件–填充静态let字符串.我应该创建一个结构还是一个类?

  7. ios – 如何将静态单元格拖入tableView swift?

    我在storyBoard中有一个tableView,我在其中添加了4个静态单元格,我的storyBoard看起来像:我没有这个tableView的任何dataSource,因为我的单元格是静态的.我使用下面的代码拖动一个单元格,它工作正常,直到我滚动一个表格.拖动后滚动它看起来像:正如你所看到的那样,细胞不再出现了.我想拖放静态单元格,我想保存它的位置,所以当我滚动时我不会再重新排列.Sample

  8. ios – 示例代码中AVFoundation.Framework中的静态void指针

    我正在浏览AVFoundation.Framework的示例代码–>AVSimpleEditoriOS&我发现以下一行我无法理解.考虑以下在上面的两行中,我可以看出那些是2个静态的void/generic指针,带有一些奇特的名字.现在回到这两行,我再次粘贴在这里,上面的意思是,2个静态void/generic指针存储它自己的&为什么它需要在什么意义上?我只需要很少的指导来学习这种编码模式.等待知识

  9. ios – Static Cells在Interface Builder中显示为空(运行XCode 7.1)

    解决方法终于找到了一个解决方法,因为这仍然发生在Xcode7.2Beta中:在InterfaceBuilder中,选择ViewController并在属性检查器中将其模拟大小设置为“Freeform”,然后切换到大小检查器并设置适合整个内容的高度.说实话,这比滚动更好.猜猜这将成为我在IB中静态表视图的默认设置.版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。如发现本站有涉嫌侵权/违法违规的内容,请发送邮件至dio@foxmail.com举报,一经查实,本站将立刻删除。

  10. swift 2.0 结构体

    //12.结构体--目前没什么特别的应用场景,大多都用类来写的。init{self.age=ageself.gender=gender}funceat{print}//静态方法--里只能使用静态属性staticfuncwalk(){print}}varperson_12=Personprint

随机推荐

  1. 基于EJB技术的商务预订系统的开发

    用EJB结构开发的应用程序是可伸缩的、事务型的、多用户安全的。总的来说,EJB是一个组件事务监控的标准服务器端的组件模型。基于EJB技术的系统结构模型EJB结构是一个服务端组件结构,是一个层次性结构,其结构模型如图1所示。图2:商务预订系统的构架EntityBean是为了现实世界的对象建造的模型,这些对象通常是数据库的一些持久记录。

  2. Java利用POI实现导入导出Excel表格

    这篇文章主要为大家详细介绍了Java利用POI实现导入导出Excel表格,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  3. Mybatis分页插件PageHelper手写实现示例

    这篇文章主要为大家介绍了Mybatis分页插件PageHelper手写实现示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

  4. (jsp/html)网页上嵌入播放器(常用播放器代码整理)

    网页上嵌入播放器,只要在HTML上添加以上代码就OK了,下面整理了一些常用的播放器代码,总有一款适合你,感兴趣的朋友可以参考下哈,希望对你有所帮助

  5. Java 阻塞队列BlockingQueue详解

    本文详细介绍了BlockingQueue家庭中的所有成员,包括他们各自的功能以及常见使用场景,通过实例代码介绍了Java 阻塞队列BlockingQueue的相关知识,需要的朋友可以参考下

  6. Java异常Exception详细讲解

    异常就是不正常,比如当我们身体出现了异常我们会根据身体情况选择喝开水、吃药、看病、等 异常处理方法。 java异常处理机制是我们java语言使用异常处理机制为程序提供了错误处理的能力,程序出现的错误,程序可以安全的退出,以保证程序正常的运行等

  7. Java Bean 作用域及它的几种类型介绍

    这篇文章主要介绍了Java Bean作用域及它的几种类型介绍,Spring框架作为一个管理Bean的IoC容器,那么Bean自然是Spring中的重要资源了,那Bean的作用域又是什么,接下来我们一起进入文章详细学习吧

  8. 面试突击之跨域问题的解决方案详解

    跨域问题本质是浏览器的一种保护机制,它的初衷是为了保证用户的安全,防止恶意网站窃取数据。那怎么解决这个问题呢?接下来我们一起来看

  9. Mybatis-Plus接口BaseMapper与Services使用详解

    这篇文章主要为大家介绍了Mybatis-Plus接口BaseMapper与Services使用详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

  10. mybatis-plus雪花算法增强idworker的实现

    今天聊聊在mybatis-plus中引入分布式ID生成框架idworker,进一步增强实现生成分布式唯一ID,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

返回
顶部