这是因为:写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