为什么写java的同学喜欢过度设计

这是因为:写java同学为了拼命证明自己的能力,显得自己很强很重要,既然不能往深度玩,当然就只能在概念上、在业务上玩出花了,然后对外行人说,“你看,我多重要”。过度设计是认知过程中的必经阶段,用什么语言都一样。

写java同学为了拼命证明自己的能力,显得自己很强很重要,既然不能往深度玩,当然就只能在概念上、在业务上玩出花了,然后对外行人说,“你看,我多重要”。过度设计是认知过程中的必经阶段,用什么语言都一样。

在 Spring 的生态环境中,大量使用了类似这种形式的设计方案。例如 ViewResolver 接口,它具有丰富的子级层次结构和非常多的实现类。(例如:InternalResourceViewResolver、VelocityLayoutViewResolver)。在框架的其他部分也有非常多的示例(beanFactory、ApplicationContext)。

但是,要明白的一些重点是:

Spring 在层次化的结构设计中组织了许多不同的子类。

Spring 是一个框架,框架的含义是可扩展,不可修改。

在我们写过的大多数 Spring Web 程序中。找到我们定义的接口(Controller、Service、Dao),会发现,大多数情况下,他们的实现类只有一个,而且可能会用 Impl 为后缀。如果接口位于 xyz 包中,那么实现类就会在 xyz.impl 包中,不知道大家会不会对与此种设计感到好奇?为什么要这样做?我们很难为接口的实现类提供一个相关的名称,因为实现类和接口之间没有语义上的区别,即实现类没有专门化接口。基于此得出的结论是:这种接口不是必须的。

一些高级开发人员可能会说:“即便现在没有用,抽象设计在以后也有用!”。但是,为了将来的可能会有用这一点而在现在加入了一堆不必要的东西,只会浪费前期时间,而且对于大多数的 Web 程序来说,以后也不会有用。这种设计方法无疑与敏捷开发相冲突。

当然,即使在以后真的有这种需求了,借助现代 IDE 的重构功能,也可以很方便的修改程序。

早期的 Spring 动态代理只有 JDK 的动态代理,新版本的 Spring 早已经支持了 cglib 代理方式,所以创建一个接口只是为了可以实现动态代理这方面也是不成立的。

延伸阅读:

什么是Java?

Java具有大部分编程语言所共有的一些特征,被特意设计用于互联网的分布式环境。Java具有类似于C++语言的形式和感觉,但它要比C++语言更易于使用,而且在编程时彻底采用了一种以对象为导向的方式。

Java是一种编程语言,被特意设计用于互联网的分布式环境。Java具有类似于C++语言的“形式和感觉”,但它要比C++语言更易于使用,而且在编程时彻底采用了一种“以对象为导向”的方式。

使用Java编写的应用程序,既可以在一台单独的电脑上运行,也可以被分布在一个网络的服务器端和客户端运行。另外,Java还可以被用来编写容量很小的应用程序模块或者applet,做为网页的一部分使用。applet可使网页使用者和网页之间进行交互式操作。

文章标题:为什么写java的同学喜欢过度设计,发布者:小编,转载请注明出处:https://worktile.com/kb/p/40978

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小编小编认证作者
上一篇 2023年2月23日
下一篇 2023年2月23日

相关推荐

  • 项目经理如何谈规划和管理

    项目经理在谈规划和管理时,应以清晰定义项目范围、设立可实现的目标、制定详尽的工作分解结构(WBS)、采用合适的项目管理工具、进行风险管理以及保持持续的沟通作为核心要点。这些要点是成功的基础,例如,通过制定详尽的工作分解结构(WBS),项目经理能够将复杂的项目任务分解为更易管理和执行的小任务,从而确保…

    2024年4月10日
    4600
  • 极限编程与scrum的区别是什么

    极限编程与scrum的区别体现在:1、迭代长度;2、是否允许在迭代中修改需求;3、是否严格按照迭代的优先级实现用户故事;4、是否采用严格的工程方法来保证软件实施过程中的进度或质量。其中,XP的一个Sprint的迭代长度大致为1~2周, 而Scrum的一般为 2~ 4周。

    2023年1月1日
    83801
  • vscode为什么开始收费了

    Visual Studio Code(VS Code)并没有开始收费,它仍然是一个免费、开源的源代码编辑器,由Microsoft发布并维护。VS Code广泛支持多种编程语言,并具有丰富的扩展库、代码高亮、智能补全、轻量级操作、跨平台功能等。开源性与免费使用是它的核心卖点,这些年来,它凭借这些优点获…

    2024年4月3日
    21300
  • ChatGPT在处理多语言交流中的效率如何

    ChatGPT在处理多语言交流中的效率相当高,关键在于其基于强大的语言模型以及跨语言处理能力。1、 ChatGPT能够理解和生成多种语言的文字,这得益于其在大量多语料训练的基础上。2、 它能够通过上下文理解抓住交流核心,即便在面对语法或表达的差异性时也能维持通信的连贯性。3、ChatGPT还可以利用…

    2023年12月1日
    41100
  • Maven中jar,pom,war的区别在哪里

    Maven中jar,pom,war的区别是:pom工程用在父级工程或聚合工程中。用来做jar包的版本控制。war工程:将会打包成war,发布在服务器上的工程,如网站或服务。所以service通常打包成war包。jar工程:将会打包成jar用作jar包使用。

    2023年2月13日
    65600
  • 产品经理和项目经理有什么区别

    区别:1、角色定位;2、工作职责;3、涉及范围;4、核心目标;5、交互对象;6、需要的技能。产品经理负责产品的整体生命周期,确保产品满足用户需求和商业目标。项目经理负责项目的整体流程和时间线,确保项目按照既定的目标、预算和时间完成。 1、角色定位 产品经理 (Product Manager, PM)…

    2023年7月30日
    42800
  • devops适用于什么项目

    DevOps, a confluence of development and operations, progresses swiftly in arenas demanding swift iterations, robust infrastructure, and automated work…

    2024年3月26日
    6900
  • 云原生转型中常见的组织挑战

    云原生架构的转型通常伴随着多样的组织挑战,包括:1、文化转换与团队适应性;2、技术互通与资源整合;3、安全性与合规性问题;4、成本管理与优化;5、业务连续性与灾难恢复策略。这些挑战中,文化转换与团队适应性尤为关键,因为组织必须培养具有云原生思维的人才,平衡旧有流程与新技术之间的矛盾,推动良好的协作文…

    2023年12月28日
    25700
  • 哪些违规操作会让苹果企业开发者账号被封禁

    违规操作会让苹果企业开发者账号被封禁的有:1、以同一身份申请多个账号;2、应用涉及敏感信息违规;3、APP有bug漏洞,长时间没有解决;4、企业开发者账号签名APP过多;5、上架的APP与苹果的自有APP存在竞争关系。一个人的信息注册可能会向多个账户申请,这些帐户的安全性较低。 一、以同一身份申请多…

    2023年5月10日
    70400
  • 面试问到如何管理一个项目

    在管理一个项目时,关键步骤包括明确项目目标和范围、组建合适的团队、制定详细的项目计划、实施有效的沟通机制、持续监控和控制项目进度、以及灵活处理变更和风险。这些步骤是确保项目成功的基石,并应得到所有项目管理者的密切关注和执行。 组建合适的团队是充分发挥团队成员能力、确保项目顺利进行不可忽视的关键一步。…

    2024年4月11日
    6000

发表回复

登录后才能评论
注册PingCode 在线客服
站长微信
站长微信
电话联系

400-800-1024

工作日9:30-21:00在线

分享本页
返回顶部